简介
Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。
Vim官方入门 -> vimtutor
Vim 模式
普通模式
在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
Vim强大的编辑能力来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令"dd"删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个"d",比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复"dd"两次),和"dj"的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按"a"(append/追加)键或者"i"(insert/插入)键。
插入模式
在这个模式中,大多数按键都会向文本缓冲区中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按ESC键回到普通模式。
可视模式
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
选择模式
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
命令行模式
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
Ex模式
这和命令行模式比较相似,在使用":visual"命令离开Ex模式前,可以一次执行多条命令。
Vim 操作
CTRL-G 显示你所在位置与文件状态
移动
j (上)
h (左) l (右)
k (下)
w //移动到下一个单词头部
b //移动到上一个单词头部
e //移动到单词末尾
0 //移动到行首
$ //移动到行尾
gg //移动到文件起始位置
G //移动到文件末尾
numberG //移动到第number行
CTRL-O //移动到最开始的位置
CTRL-I //移动到最新的位置
% //移动到匹配的(,),[,],{,}
复制
y //复制文本
插入字符
a //字符后追加
A //行尾追加
i //光标前插入
o //光标下方插入一行
O //光标上方插入一行
替换
R //进入替换模式
r 输入字符 //替换单个字符
:s/old/new //替换第一个匹配到的匹配项
:s/thee/the/g //替换本行中的匹配项
:#,#s/old/new/g //替换多行中的匹配项,其中#,#是要进行替换的行范围的行号
:%s/old/new/g //替换整个文件中的每个匹配项
:%s/old/new/gc //查找整个文件中的每个匹配项,并提示是否替换
删除
x //删除当前光标下的字符
dw //删除当前光标下的词
d$ //删除从当前光标下的词到行尾的所有字符
dd //删除当前光标所在整行
ce //删除当前光标所在词并进入插入模式
c$ //删除当前光标所在到行尾的所有字符并进入插入模式
多行操作
operator [number] motion
operator - 操作符,如d,c,y
[number] - 重复次数选项
motion - 移动文本进行操作,例如w(word),$(到行尾)等。
粘贴
p //在当前光标下一行位置放回刚刚删除的内容
撤销
u //撤销先前的操作
U //撤销整行的操作
CTRL-R //撤销的撤销(重做)
查找
/keyword //往下查找关键词
?keyword //往上查找关键词
n //查找操作后移动到下一个关键词
N //查找操作后移动到上一个关键词
执行外部命令
:!ls //输出ls命令
:w FILENAME //将当前vim文件写入FILENAME文件
v :w FILENAME //将Visual模式选中的行写入到FILENAME
:r FILENAME //读取磁盘中FILENAME文件并将其置于光标位置下方
:r !pwd //读取pwd命令的输出并将其置于光标位置下方
命令行模式
:set xxx
'ic' 'ignorecase' //搜索时忽略大写/小写
'is' 'incsearch' //显示搜索词组的部分匹配
'hls' 'hlsearch' //高亮所有匹配的短语
:set noxxx //在选项前加no关闭功能
退出Vim
:q! //放弃所有更改并退出
:wq //保存更改并退出
参考文献
本文由 BepHbIN響 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 26, 2018 at 06:59 am