Vim编辑器功能强大,但入门也不是很简单,以前曾接触过一段时间,后来很久没用就很快忘记了,现在打算重新拾起来。
参考资料:GVIM用户手册
width="738" height="523" class="preview-iframe" scrolling="no" src="http://download.youkuaiyun.com/source/preview/2626530/5ffbca7123d1f34d51e3fcc595736166" __idm_frm__="178">Vim第一步
合抱之木,生于毫末;九层之台,起于累土;千里之行;始于足下。 ——老子《道德经》
02.1 首次运行Vim
gvim file.txt 使用编辑器打开新窗口进行编辑
vim file.txt 当前命令行窗口打开编辑程序
02.2 插入文本
Vim是模式编辑器,基本模式是Normal模式和插入模式,在不同模式下编辑器有不同的行为模式。
:set showmode 打开显示模式的开关
无论处于何种模式,按Esc键都会回到Normal模式。
02.3 移动光标
Normal模式:
h->左 j->下 k->上 l->右
02.4 删除字符
Normal模式:
x 删除一个字符
dd 删除一整行,删除后下一行会填补这一行
J 删除换行符
D 删除该行当前光标之后所有内容
02.5 撤销与重做
Normal模式:
u 撤销上一次操作
Ctrl r 重做,用来反转撤销的动作,是对撤销的撤销
U 一次撤销对一行的全部操作,第二次则会撤销前一个“U”的操作
02.6 其他编辑命令
Normal模式:
i 在当前光标前面插入字符
a 在当前光标后面插入字符
o 在当前行下面另起一行插入文字
O 在当前行上面另起一行插入文字
使用命令计数:
9k 向上移动9次
3a! 在该光标之后插入3个!符号
3x 删除紧邻的三个字符
指定的数字要紧邻在它要修饰的命令前面。
02.7 退出
Normal模式:
ZZ 保存文件并退出编辑器
:q! 丢弃所有修改并退出
:e! 放弃所有修改并载入该文件的初始内容
02.8 求助
利用命令:
:help
或者按F1键会带你回到帮助文件的起始点。帮助窗口也是一个普通的编辑窗口,可以通过hjkl来回移动光标。
ZZ 该命令可以退出帮助文件,但不会退出编辑器
在浏览帮助文档时如果遇到超链接(使用中括号包起来的命令,例如[count]),可以在该中括号之间的任何位置使用命令
ctrl ]
跳转到制定的主题。如果想要跳出来可以使用以下命令:
ctrl t 弹出标签
ctrl o 跳转到较早的位置
要查看某个特殊主题的帮助,使用以下命令形式:
:help {subject}
例如
:help x 查找关于“x”命令的帮助
:help deleting 查找关于如何删除的内容
:help index 得到所有命令的索引
:help ctrl a 得到控制字符ctrl a的帮助
:help ctrl h 得到Normal模式下控制字符ctrl h的帮助
:help i_ctrl h 得到Insert模式下控制字符ctrl h的帮助
:help -t 查看命令行参数-t的功能
:help 'number' 查看number选项的帮助
:help i_<Up> 查找Insert模式下上箭头键的功能(特殊键用尖括号中一个简单的描述性名字表示)
:help E37 查找错误信息E37的具体信息
移动
在插入和删除文本之前,先要将光标移到正确位置。下面是Vim中常用的移动命令。
03.1 以Word为单位的移动
w 向前移动到后一个word,停在下一个word首字符
b 向后移动到前一个word,停在前一个word首字符
e 向前移动到后一个word,停在下一个word尾字符
ge 向后移动到前一个word,停在前一个word尾字符
03.2 移动到行首或行尾
$ 移动到行尾
0 移动到当前行第一个字符
^ 移动到当前行第一个非空白字符
2$ 移动到第二行行尾
03.3 移动到制定字符上
f 即“find”命令,“fx”会跳到当前行含有字符'x'单词的'x'字符上。
3fl 跳到第三个上
F 该命令往左搜索
t 命令形似f命令,只不过光标会停在所找字符前一个字符上
T 同F命令,也是停在所找字符前一个字符上
这四个命令都可以用“;”命令来重复操作,而“,”命令也是重复操作只不过方向相反。
03.4 匹配括号
%
该命令会匹配与它相对应的括号,无论大括号还是小括号。如果当前光标不在括号上,它会向前寻找遇到的第一个括号,并匹配。
03.5 移动到指定行
[count]G 跳转到count行,例如"33G"跳转到第33行
G 跳转到最后一行
gg 跳转到第一行
百分比跳转
% 例如"50%"会跳转到文档中间,"90%"会跳转到接近文件尾的地方
只移动目前屏幕上的那些行
H(Home) 跳转到屏幕最上面
M(Middle) 跳转到屏幕中间
L(Last) 跳转到屏幕最下面
03.6 告诉你当前位置
ctrl+g 该命令告诉你当前文件和光标位置信息
:set number 该命令会在每行前显示行号
:set nonumber 将行号关闭
:set ruler 在右下角显示光标位置
03.7 滚来滚去
ctrl u 显示文本的窗口向上滚半屏
ctrl d 显示文本的窗口向下滚半屏
ctrl f 文档向前滚动一整屏
ctrl b 文档向后滚动一整屏
ctrl e 向前滚一行
ctrl y 向后滚一行
zz 会把当前行置为屏幕正中央
zt 会把当前行置为屏幕顶端
zb 会把当前行置为屏幕底端
03.8 简单搜索
/string 用于搜索字符串,例如/include
使用
n 命令查找下一个字符串
N 该命令同'n'命令功能相同,方向相反
对于查找的字符串中包含特殊字符,例如
~ $ % ^ * [] / ?
需要在这些字符前加反斜杠进行转义,例如”/100$”
? 该命令与'/'命令功能相同,不过是往后搜索
忽略大小写
:set ignorecase
关闭忽略大小写
:set noignorecase
命令历史纪录
'/'和':'命令有历史记录,在输入'/'或':'命令后,可以按上下箭头进行搜索历史命令
在文本中查找下一个WORD
比如你要找一个单词的下一个单词位置,这时你可以把将光标定位在这个的单词上,然后按下“*”键,就会搜索到下一个单词位置。
# 命令是 * 命令的反向版
这些命令都可以在前面加计数器进行搜索
查找整个WORD
利用/the\>、/\<the\>来查找“the”,而不是“there”或者“soothe”
:set hlsearch 高亮搜索结果
:set nohlsearch 关闭高亮搜索结果
:nosearch 关闭本次高亮搜索结果
03.9 简单的搜索模式
利用正则表达式来描述要搜索的目标,例如:利用
/^include 查找只出现在开头的include
/include$ 查找只出现在末尾的include
匹配任何的单字符
. 字符可以匹配任何单字符,例如/c.m,可以找到computer、cum等等
如果要查找的本身就是’.’字符,需要用反斜杠来转义。
03.10 使用标记
当使用跳转命令时(例如G、H、M、L等命令,不包括hjkl命令),使用
·· 命令可以跳回到出发点
ctrl o 可以跳回之前早些位置
ctrl i 跳回停置光标的更新的位置
有名标记
利用
m 命令标记当前位置并命名,例如“ma”
然后使用
' 命令跳转到标记行的行首,例如'a
` 命令跳转到标记所在的行和列,位置比较精确。例如`a