1:后退、前进
vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。
相关帮助: :help CTRL-O :help CTRL-I :help jump-motions
2:复制
yy::复制当前整行的内容到vi缓冲区
y$:复制光标所在位置到行尾内容到缓存区
y^:复制光标所在位置到行首内容到缓存区
yw:复制一个单词
5yw:复制五个单词,从光标处开始
5yy:复制五行
3:搜索
搜索特殊操作:
找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
选中高亮:
在单词上输入:gd 高亮显示。
模糊搜索:
光标停留在想要查找的单词的任意一个字母上面, 然后输入Shift + * ,即可快速选中该单词,并且可以通过 n 或 N 进行上一个或下一个的匹配
4:替换
(1)全词匹配
如果你输入 /int,你也可能找到 print。
要找到以 /int 结尾的单词,可以用:
/int\>
“>” 是一个特殊的记号,表示只匹配单词末尾。类似地,“>” 只匹配单词的开头。
一次,要匹配一个完整的单词 “int”,只需:
/\< int\>
(2)不区分大小写
默认是区分大小写的
先输入
:set ignorecase //忽略大小写
进行查找
再输入
:set noignorecase //恢复到大小写敏感
(3)区分大小写替换
上文中命令结尾的g
即是替换标志之一,表示全局global
替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i
表示大小写不敏感查找,I
表示大小写敏感:
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c
表示需要确认,例如全局查找"foo"
替换为"bar"
并且需要确认:
:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"
出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下y
表示替换,n
表示不替换,a
表示替换所有,q
表示退出查找模式, l
表示替换当前位置并退出。^E
与^Y
是光标移动快捷键
(4)替换一定范围内的内容
将1至3行的第一个a替换为b
:1,3s/a/b/
将1至3行的所有a替换为b
:1,3s/a/b/g
5:撤销,恢复
u:撤销上一步的操作
Ctrl+r:恢复上一步被撤销的操作
6:插入
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
7:删除
x: 删除当前字符
3x: 删除当前光标开始向后三个字符
X: 删除当前字符的前一个字符。X=dh
dl: 删除当前字符, dl=x
dh: 删除前一个字符
dd: 删除当前行
dj: 删除上一行
dk: 删除下一行
10d: 删除当前行开始的10行。
D: 删除当前字符至行尾。D=d: 删除当前字符之后的所有字符(本行)
kdgg: 删除当前行之前所有行(不包括当前行)
jdG(jd shift + g): 删除当前行之后所有行(不包括当前行)
:1,10d: 删除1-10行
:11,d: 删除所有行
J(shift + j): 删除两行之间的空行,实际上是合并两行。
8:保存,退出
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
9: 新建文件并保存
在打开的VIM中新建文件并保存
命令模式输入:new filename
(1) vim 有个cd命令。
用来更改当前文件夹。
:cd sth
进入sth文件夹。
这样新文件保存之后就在当前文件夹。
不过如果你打开一个已经保存的文件后然后更改当前文件夹是不会改变保存路径的。
你必须为:write 指定参数。
(2)保存的时候可以指定路径:
:write sth/file.cpp
这样把文件保存到相对路径sth/下。你也可以使用绝对路径。
vim不会自动建立不存在的文件夹。你要手动建立。
10: 缩进
按v(或V)进入visual状态,选择多行,用>或<缩进或缩出
11:高亮与取消高亮
:noh //在命令模式下输入,取消高亮
将光标移动到所在的单词,然后输入
:gd //就会高亮
12: 使用VIM Tab与空格
makefile:4: *** missing separator. Stop.
原因 :Makefile只识别Table键,而无法识别空间开头的命令
解决方法 :通过在 vim编辑模式下组合“ ctrl + v + i ”来写入一个 tab键;
检查Makefile文件:od -t c makefile
13:刷新已加载的文件
:e 重新加载文件
:e! 强制丢掉本地修改,从磁盘加载文件
14:VIM 分屏功能
:ter #分屏切换到终端
:vs #当前窗口分屏
15: 配置
我们现在已经能快速的分别光标所在的位置了,但是离我们最终需要的 效果还差一些,因为当前行是一条横线,所以有时候很难区分英文的逗号 和句号,在这个基础上我们需要加入一下配置
highlight CursorLine cterm=NONE ctermbg=black(可以用下图数子代替) ctermfg=green guibg=NONE guifg=NONE
highlight CursorColumn cterm=NONE ctermbg=black(可以用下图数子代替) ctermfg=green guibg=NONE guifg=NONE
highlght
主要是用来配色的,包括语法高亮等个性化的配置。可以通过:h highlight,查看详细信息
CursorLine
和 CursorColumn
分别表示当前所在的行列
cterm
表示为原生vim
设置样式,设置为NONE
表示可以自定义设置。
ctermbg
设置终端vim的背景色
ctermfg
设置终端vim的前景色
guibg
和 guifg
分别是设置gvim的背景色和前景色,本人平时都是使用终端打开 vim,所以只是设置终端下的样式,下图是我的配置截图:
现在配合上终端的颜色就很酷了,顺便说一下自己的感受,vim的学习曲线比较 陡峭,但是随着对vim的学习深入,编辑效率确实发生了大幅度的提高,最后觉 得这些付出是值得的。一般学会使用vim之后都会长期的使用,我觉得其中一个 原因就是难学,因为难学,所以付出了很多,所以越舍不得抛弃,自己编辑器 的配置都是一行一行慢慢打磨出来的,产生了比较深厚的感情。
配置截图如下:
色彩配置参见如下网站:
https://jonasjacek.github.io/colors/