Vim 学习笔记 —— 第一篇个人博客
这是在博客园发表的第一篇博客,最近打算开始学习vim,就记录一下常用的命令与学习的心得体会吧。学习的过程中有参考前人的博文,会在文后指出。
注:本人使用Mac,所以有些命令可能是Mac下操作特有的,如与Linux或者Windows下操作有差异,请大家自行探索。
2016年11月28日:
历史和启动
查找历史命令:以:和/开头的命令都有历史记录,键入:或/后按上下箭头来选择某个历史命令。
vim:直接启动vim
文件命令
vim filename:打开vim并创建名为filename的文件
vim file:打开单个文件
vim file1 file2 file3 ...:同时打开多个文件
:open file:在vim窗口中打开一个新文件(貌似:args中没有新打开的文件,待研究)
:split file:在新窗口中打开文件(如何切换窗口,待研究)
:bn:切换到下一个文件
:bp:切换到上一个文件
:args:查看当前打开的文件列表,当前正在编辑的文件会用[]括起来(貌似不对,待研究)
vim的模式
正常模式:(按Esc或Ctrl+[进入) 左下角显示文件名或为空
插入模式:(按i键进入) 左下角显示--INSERT--
可视模式:(正常模式下按v) 左下角显示--VISUAL--
插入命令
i:在当前位置前插入
I:在当前行首插入
a:在当前位置后插入
A:在当前行尾插入
o:在当前行之后插入一行
O:在当前行之前插入一行
2016年11月29日:
查找命令
/text:查找text,按n健查找下一个,按N健查找前一个。
?text:查找text,反向查找(即与/查找方向相反),按n健查找下一个,按N健查找前一个。
vim中有一些特殊字符在查找时需要转义 .*[]^%/?~$(貌似?不需要,具体哪些再研究)
:set ignorecase:忽略大小写的查找
:set noignorecase:不忽略大小写的查找
查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,*相当于/搜索。而#命令相当于?搜索。
:set hlsearch:高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch:关闭高亮搜索显示
:nohlsearch:关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch:逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan:重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
替换命令
ra:将当前字符替换为a,当前字符即光标所在字符。
:s/old/new/:用new替换old,替换当前行的第一个匹配
:s/old/new/g:用new替换old,替换当前行的所有匹配
:%s/old/new/:用new替换old,替换所有行的第一个匹配
:%s/old/new/g:用new替换old,替换整个文件的所有匹配
:10,20 s/^/ /g:在第10行知第20行每行前面加四个空格,用于缩进。
ddp:交换光标所在行和其下紧邻的一行。
移动命令
h:左移一个字符
l:右移一个字符,这个命令很少用,一般用w代替。
k:上移一个字符
j:下移一个字符
以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。
w:向后移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。此命令快,可以代替l命令。
b:向前移动一个单词,2b:向后移动2个单词
e:同w,只不过是光标停在单词尾部
ge:同b,光标停在单词尾部。
^:移动到本行第一个非空白字符上
0(数字0):移动到本行第一个字符上
$:移动到行尾,3$:移动到下面第3行的行尾
gg:移动到文件头。 = [[
G(shift + g):移动到文件尾。 = ]]
f:(find)命令也可以用于移动(貌似只能用于当前行),fx:将找到光标后第一个为x的字符,3fd:将找到第三个为d的字符。
F:同f,反向查找。
跳到指定行:冒号+行号,回车,比如跳到240行就是 :240回车;另一个方法是行号+G,比如230G跳到230行。
Ctrl + e:向下滚动一行
Ctrl + y:向上滚动一行
Ctrl + d:向下滚动半屏
Ctrl + u:向上滚动半屏
Ctrl + f:向下滚动一屏
Ctrl + b:向上滚动一屏
撤销和重做
u:撤销(Undo)
U:撤销对整行的操作
Ctrl + r:重做(Redo),即撤销的撤销。
参考文章: