目录
基本概念
vim有三种工作模式:
- 一般模式:vim file之后就进入了一般模式
- 编辑模式:一般模式下按
i、a、o
等,按Esc返回一般模式- 修改文件的某一部分内容
i
在光标当前位置插入,Shift + i
在当前光标所在行的开头插入a
在当前光标的后一个位置插入,Shift + a
在当前光标所在行的结尾插入o
在光标下一行插入,Shift + o
在光标的上一行插入
- 命令行模式:一般模式下按
:
、/
。?
进入,按Esc返回一般模式- 对整体文档进行的操作
编辑
dd
:删除当前行,ndd
删除n行,d$
删除当前光标至行尾(或使用Shift + d
),d^
删除当前光标至行首dw
:删除当前单词,ndw
删除当前n个单词,从当前光标开始yy
:复制当前行,nyy
复制n行,y$
复制当前光标至末尾,y^
复制当前光标至行首yw
:复制当前单词,nyw
复制当前n个单词,当前使用vim复制的东西可以在vim另外一个文件时粘贴,vi就不行cc
:删除当前行,并插入,Shift + c
删除至行末并插入x
:剪切当前字符,光标位置不动(类似window的delete键),Shift + x
删除当前字符,光标左移(类似window的backspace键),可以使用p
粘贴字符,粘贴位置为当前光标所在字符的后一个位置开始。r
:替换当前字符,Shift + r
进入替换模式,后续写的内容都会对当前内容进行替换p
:粘贴u
:撤回Ctrl + r
重做- 竖行操作
Ctrl + Shift + v
进入可视模式,再次按取消可视模式- 按
down
到结束行 Shift + i
在光标前插入,Shift + a
在光标后插入,r
替换- 输入,按
Esc
- 可结合
:set nu
,行号 + Shift + g
移动光标进行任意选择行,Shift + g
直到文件末尾
浏览
0
:移动到行首(或^
)$
:移动到行尾w
:向后移动到词首,b
向前移动到词首,Shift + w
跳过特殊字符向后移动到词首e
:向后移动到词尾,可以使用Ctrl + left/right
按单词左右快速移动(与window上类似)gg
:移动到文件开头Shift + g
:移动到文件末尾,n + Shift + g
移动到当前文件的第几行(可以使用:set nu
显示行号直接跳转到想要的行号)Shift + 0
移动到段落末尾Shift + h/l
:移动到当前页的第一行(最后一行),h指head,l指lastCtrl + f/b
:向下(上)翻页,f指forward,b指back,或Shift + up/down
Ctrl + e
:向下(上)滚动Ctrl + g
:显示文件名,总行数,光标所在位置之前内容占比,光标位置,顶行之前内容占比
命令行模式
*
:搜索当前单词,n
显示下一个,Shift + n
显示上一个#
:反向搜索当前单词,n
显示下一个,Shift + n
显示上一个:w
:保存,w表示write,:w a.txt
另存为一个文件,:w n1,n2 w 1.txt
n1到n2行另存为一个文件,使用r表示追加:q
:退出,q表示quit,:q!
不保存退出:wq
:保存退出,:wq!
强制保存退出,:x
或Shift + zz
:set nu
:显示行号,:set nonu
取消显示行号/xxx
:搜索xxx,n
显示下一个,Shift + n
显示上一个,这时是高亮显示的,:noh
不高亮显示了?xxx
:反向搜索xxx,n
显示下一个,Shift + n
显示上一个:s/old/new
:替换当前行找到的第一个匹配的字符串:s/old/new/g
:替换当前行所有匹配的字符串,g表示当前行的global:%s/old/new
:替换所有行的第一个的字符串:%s/old/new/g
:替换文件所有匹配字符串
总结
常用:
- 删除、复制、粘贴:
dd
,ndd
,dw
,ndw
,yy
,nyy
,yw
,nyw
,p
- 左右移动光标:
Ctrl + left/right
,按单词左右移动词首位置跳过特殊字符,e
移动到词尾,^/$
移动光标到行首(行尾) - 上下移动光标:
gg
,移动到首行,Shift + g
移动到尾行,n + Shift + g
移动到指定行,:set nu
显示行号 - 上下翻页:
Ctrl + f/b
- 上下滚动:
Ctrl + e/y
- 删除字符:
Shift + x
,x
,相当于backspace和delete,或者进入编辑模式使用backspace和delete,如果是删除单词的话直接使用dw
,如果是替换使用r
或Shift + r