Vim编辑器常用命令
没用过vim编辑器,记录一下命令
Vim三种工作模式(命令模式、输入模式和编辑模式)
- 使用Vim编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右)或k、j、h、i移动光标位置,还可以对文件内容进行复制、粘贴、替换、删除等操作;
- 在输入模式下,Vim可以对文件执行写操作,类似于在Windows系统的文档中输入内容。使Vim进行输入模式的方式是在命令模式状态下输入i、I、a、A、o、O等插入命令,当编辑温江完成后按Esc键即可返回命令模式;
- 编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。使Vim切换到编辑模式的方法是在命令模式状态下按“:”键,此时Vim窗口的左下方出现一个“:”符号,这时就可以输入相关指令进行操作了;
- 指令执行后,Vim会自动返回命令模式。如果想直接返回命令模式,按Esc即可;
Vim打开文件
-
使用Vim打开文件,
$ vim test.txt &
用【vim】文件会在terminal打开,【gvim】文件会在gui界面打开
&表示当前进程打开,但不影响在终端敲其他命令
Vim快捷方向键和以单词为单位移动
w/W:可以移动到下一个单词的首
e/E:可以移动到下一个单词的尾
b/B:可以移动到上一个单词的首
Vim插入文本
- 从命令模式进入输入模式使用不同的键:
i:在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I:在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行i命令
o:在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O:在光标所在行的上面插入新的一行。光标停在空行首,等待输入文本
a:在当前光标所在位置之后插入随后输入的文本
A:在当前光标所在行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
Vim查找文本
/abc:从光标所在位置向前朝朝字符串abc
/^abc:查找以abc为行首的行
/abc$:查找以abc为行尾的行
?abc:从光标所在位置向后查找字符串abc
查找快捷键:【shift+*】,等同于第二种
- :set nohls:取消永久高亮
- :set hls:打开永久高亮
- :noh:取消当前高亮内容
Vim替换文本
r:替换贯标所在位置的字符,只能替换一个
R:从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
: s/a1/a2/g:将当前光标所在行中的所有a1用a2替换
Vim删除文本
x:删除光标所在位置的字符
dd:删除光标所在行
ndd:删除当前行(包括此行)后n行文本
dG:删除光标所在行到文件末尾的所有内容
D:删除光标位置到行尾的内容
:a1,a2d:删除从a1行到a2行的文本内容
Vim删除单词
【dw】:删除单词,从当前位置到单词末尾
【daw】:删除单词,光标所在整个单词
选中当前单词:【viw】
vim复制和粘贴文本
p:将剪贴板中的内容粘贴到光标后
P:将剪贴板中的内容粘贴到光标前
y:复制已选中的文本到剪贴板
yy:将光标所在行复制到剪贴板,此命令前可以加数字n,可复制多行
yw:将光标位置的单词复制到剪贴板
Vim保存退出文本
:wq:保存并退出Vim编辑器
:wq!:保存并强制退出Vim编辑器
:q:不保存就退出Vim编辑器
:q!:不保存就强制退出Vim编辑器
:w:保存但是不退出Vim编辑器
:w!:强制保存文本
:w filename:另存到filename文件
x!:保存文本,并退出Vim编辑器
ZZ:直接退出Vim编辑器
Vim光标移动
- 移动至行首或行尾
【0】或^:光标移动到当前行的行首
【$】:光标移动到当前行的行尾
n $:光标移动至当前行只有n行的行尾,n为数字 - 移动至指定行
【gg】:光标移动到文件开头
【G】:光标移动至文件末尾
nG:光标移动到第n行,n为数字
【:n】:编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首 - 光标移动到匹配的括号处
程序员在编辑程序时,经常会为将光标移动到与一个“(”匹配的“)” (对于[ ]和{ }也是一样的)处而感到头疼。Vim里面提供了一个非常方便地查找匹配括号的命令,这就是%
【%】:可以查看匹配的“(”和“)”、“{”和“}”、“begin”和“end”、“case”和“endcase”等
【e】:向后,跳转到单词末尾
【w】:向后,跳转到单词首
【b】:向前,跳转到单词首
多行编辑
使用Ctrl+v进入visual block模式,上下键选择要编辑的行,大写“I”进入编辑模式,输入要插入的内容,完成后esc退出
在行尾编辑,每一行的行尾添加“word”内容
回车后,文件改写了
正则替换文本内容 行尾添加 行首添加
:[range]s/s1/s2/g
:473,478s/test/word/g
:473,478s/$/dog
$表示行尾
^表示行首
大小写转换
【Ctrl + v】进入visual block模式,上下左右选择要转换的文本范围
【viw】:选中当前单词
【gu】:转小写
【gU】:转大写
文本代码折叠
方法很多,能用就行
【创建折叠】:
zf28G:创建从当前行起到28行的代码折叠
10zf / 10zf↓ / zf10↓ :创建从当前行起到后10行的代码折叠
10zf↑:创建从当前行起到之前10行的代码折叠
zf%:创建从当前行起到对应的匹配的括号上的代码折叠
【展开当前折叠】:zo / za
【折叠当前折叠】:zc / za
【展开/关闭所有折叠】:zi
【删除当前折叠】:zd
删除和检索相关行
【:v/test/d】:删除没有关键字test的行;保留test
【:g/test/d】:删除有关键字test的行;删除test
分屏操作
【:sp】:上下分屏,后面可以加文件名
【:vsp】:左右分屏,后面可以加文件名
【Ctrl+w+w】:在多个窗口中切换
删除从指定字符串到行尾的内容
【:%s/puppy.*//】删除从puppy起始位置到行尾的字符串