vim是一款强大的命令行编辑器。
1.进入vim
指令 |
操作 |
vim file |
打开或新建文件 |
vim +n file |
打开文件,光标定位到第n行 |
vim + file |
打开文件,光标定位到最后一行 |
vim +/PATTERN file |
打开文件,光标定位到第一个被PATTERN匹配到的行的行首 |
vim -r file |
恢复上次使用vim时崩溃的文件 |
vim file1 file2 ... |
打开多个文件 |
2.vim工作模式
2.1 普通模式 Normal
打开vim编辑器模式进入命令模式,命令模式下可以进行光标移动、复制、剪切、删除、粘贴、撤销等一系列文本操作。
从其它模式切换到命令模式,可以使用ESC
键。
2.1.1 光标移动
指令 |
操作 |
j、k、h、l |
上、下、左、右 |
w、nw、W、nW |
下1/n个单词词首(大写时忽略符号) |
control+f |
向前(下)翻页 |
control+b |
向后(上)翻页 |
control+d |
向前翻半页 |
control+u |
向后翻半页 |
gg、G |
前往第一行、最后一行 |
ngg、nG |
前往第n行 |
H、M、L |
前往屏幕可见范围内最高行、中间行、最低行 |
nH、nL |
前往屏幕可见范围内第n行、倒数第n行 |
^、$、0 |
行首(不含空白)、行尾、行首(含空白) |
zz、zt、zb |
移动屏幕,使光标所在行处于中间、顶部、底部 |
fx、Fx |
将光标移动至本行下一个/上一个x处 |
control+o |
将光标移动到较旧的历史位置 |
control+i |
将光标移动到较新的历史位置 |
2.1.2 删除、剪切、复制
x - 按字符删除/剪切
d - 按行删除/剪切
指令 |
操作 |
x、nx |
剪切光标起始处的1个、n个字符 |
d$ |
删除/剪切光标至行末 |
d^ |
删除/剪切光标至行首(不包括行首空白 ) |
d0 |
删除/剪切光标至行首(包括行首空白) |
dw |
删除/剪切光标至词尾(包括空格) |
de |
删除/剪切光标至词尾(不包括空格) |
db |
删除/剪切光标至词首 |
dd |
删除/剪切光标所在处的行 |
ndd |
删除/剪切光标所处的行起始的共n行 |
c |
c指令 = d指令 + i(删除 + 进入INSERT模式) |
y |
y指令类似d指令,只不过删除/剪切动作替换为复制 |
"ay、"by、"cy... |
复制内容到a、b、c剪切板(缓冲区)) |
2.1.3 替换字符
指令 |
操作 |
r、nr |
将光标所在处的1个、n个字符替换成下次键盘输入的字符 |
2.1.4 粘贴缓冲区的内容
p(小写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
P(大写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
"ap/"aP、"bp/"bP、"cp/"cP...:从a、b、c...剪切板(缓冲区)粘贴内容;
2.1.5 缩进与格式化
指令 |
操作 |
>> |
光标所在行向右缩进 |
<< |
光标所在行向左缩进 |
VISUAL模式下,选取行,按= |
格式化所选行,自动处理缩进 |
2.1.6 undo & redo
指令 |
操作 |
u、nu |
undo,撤销此前的1个、n个操作 |
U |
撤销一行中的所有操作 |
control+r |
redo |
2.1.7 重复执行
2.2 输入模式 Insert
从命令模式进入输入模式可以使用i
、a
、o
、I
、A
、O
6个指令。
指令 |
操作 |
i |
insert,在光标所在处输入 |
a |
append,在光标所在处后方输入 |
o |
在光标所在处的下方打开一个新行 |
I |
在光标所在行的行首输入 |
A |
在光标所在行的行尾输入 |
O |
在光标所在处的上方打开一个新行 |
2.3 可视化模式 Visual
指令 |
操作 |
v |
按字符选定 |
V |
VISUAL LINE 按行选定 |
Ctrl + v |
VISUAL BLOCK 按列选定 |
- 进入VISUAL模式后,可以结合命令模式下的光标移动操作选定内容;
- 选定内容后,可以再使用d(删除)、c(删除并进入INSERT模式)、y(复制)等指令。
2.4 命令模式 Command
末行模式提供了VIM内建的命令行接口,可以对文本进行查找、替换,设置vim编辑环境,保存和退出文件。
2.4.1 退出vim
指令 |
操作 |
:q |
直接退出 |
:q! |
强制退出 |
:wq |
保存并退出 |
:wq! |
强制保存并退出 |
2.4.2 末行命令限定
- 末行命令限定即在限定命令在指定的行执行,也可以单独使用来移动光标。
指令 |
操作 |
:n |
特定的第n行,例如:5即第5行 |
:. |
当前行 |
:$ |
最后一行 |
:m,n |
从第m行到第n行 |
:% |
全文,同:1,$ |
:/pattern/ |
从光标所在处起始向文件尾部第一次被模式所匹配到的行 |
:/pat1/,/pat2/ |
从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行 |
2.4.3 查找
- 查找到匹配结果后,可以使用n将光标移到下一个匹配项,N移到上一个匹配项
指令 |
操作 |
/PATTERN |
从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串 |
?PATTERN |
从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串 |
:/str |
正向搜索,将光标移动到下方第一个包含str的行 |
:?str |
反向搜索,将光标移动到上方第一个包含str的行 |
2.4.4 替换 s
- 命令后选项:g 单行内所有匹配项、 i 忽略大小写、c 确认是否替换
- 关键词 old 替换为 new
- 分隔符/可以换成其它非常用字符,如@#等
指令 |
操作 |
:s/old/new |
将光标所在行第一个 old 替换为 new |
:s/old/new/g |
将光标所在行所有 old 替换为 new |
:%s/old/new/gc |
全文执行替换,询问是否替换 |
:3,10s/old/new/gic |
将第3行到第10行内容替换,忽略大小写,且每个询问是否替换 |
2.4.5 获取帮助
指令 |
操作 |
:help |
查看帮助全文 |
:help subject |
查看特定帮助 |
2.4.6 其它操作
2.4.7 执行shell命令
指令 |
操作 |
:!commond |
末行模式下还可以不退出vim |
2.4.8 设置vim工作特性
- 在末行模式下的设定,仅对当前vim进程有效;如果希望永久有效,可以修改/etc/vimrc(全局)、~/.vimrc(个人)。
指令 |
操作 |
:set number, set nu |
显示行号 |
:set nomber, set nonu |
隐藏行号 |
:set ai |
启用自动缩进 |
:set noai |
禁用自动缩进 |
:set hlsearch |
启用搜索高亮 |
:set nohlsearch |
禁用搜索高亮 |
:syntax on |
启用语法高亮 |
:syntax off |
禁用语法高亮 |
:set ic |
启用忽略字符大小写 |
:set noic |
禁用忽略字符大小写 |
3.多文件操作
vim FILE1 FILE2 ...
在文件间切换:
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
退出所有文件:
:wqall 保存所有文件并退出;
:wall 保存所有文件
:qall 退出所有文件
4.多窗口操作
vim除了可以同时编辑多个文件,还可以以多个窗口打开文件
指令 |
操作 |
vim -o file1 file2 file3 ... |
横向分隔窗口打开多个文件 |
vim -O file1 file2 file3 ... |
纵向分隔窗口打开多个文件 |
vim -p file1 file2 file3 ... |
以tab标签页的方式打开多个文件 |
:e file |
在vim窗口中打开新的文件 |
:new file |
纵向分割窗口并打开新文件,不指定文件时打开空白文件 |
:vnew file |
横向分割窗口并打开新文件,不指定文件时打开空白文件 |
:tabe、:tabnew |
在新的tab页打开文件 |
gt、gT |
在tab页之间进行切换 |
control+w, w/h/j/k/l |
在分割的窗口切换 |
control+w, s/v |
将当前窗口的文件分割显示 |
vim自带的练习教程:vimtutor
共有 0 条评论