Vim编辑器的详细用法
vim编辑器是Linux系统自带的编辑器,其操作较一般的编辑器要复杂许多,但熟练运用vim会极大地提升Linux系统下编辑文本的速度。看完本文赶紧去试下吧!
vim模式介绍
vim有三种模式,分别为命令模式(command mode),编辑模式(insert mode)及末行模式(last line mode)。我们在刚进入vim编辑器时为命令模式,在按下a时会进入编辑模式,同时屏幕的左下角会显示INSERT,此时就可以输入你想要的文字。在完成输入操作后,按下Esc键会退回到命令模式,此时按下 : 就会进入末行模式,其实就是vim的命令行模式,在此模式按下wq就可以保存文件并退出了。
{% note info %}
下文中命令前出现 : 均表示在末行模式中执行
vim的基本操作
打开文件
打开单个文件或者新建单个文件:
vim FILENAME
不保存对文章的改动重新编辑文件 = :q!+vim FILENAME
:
:e!
编辑文件1时不保存退出编辑文件2:
:open FILENAME2
多文件
:sp file 新建窗口打开 filename 并水平分割窗口
:vsp file 新缓窗口打开 filename 并垂直分割窗口
Ctrl + ws 水平分割窗口
Ctrl + wv 垂直分割窗口
Ctrl + ww 在窗口间切换
Ctrl + wq 关闭窗口
Ctrl + wh 切换到右侧窗口
Ctrl + wl 切换到左侧窗口
Ctrl + wj 切换到下侧窗口
Ctrl + wk 切换到上侧窗口
:qall! 不保存退出所有窗口
插入
在命令模式下键入a,A,i,I,o,O均会使vim进入编辑模式,区别在于:
i 在当前位置的前插入新的字符
I 在当前行的行首插入新的字符
a 在当前位置的后面插入新的字符
A 在当前行的行尾插入新的字符
o 在当前行的下面插入一个新行
O 在当前行的上面插入一个新行
查找
/pattern 向下搜索pattern
?pattern 向上搜索pattern
vim中搜索特殊字符需要进行转义包括 . \ * [] / ? ~ $ % ^ *等
光标选择某个单词,按住Shift+3,即可把所有的单词标注出来
n 切换下一个搜索结果
N 切换上一个搜索结果
:noh 取消搜索结果的高亮显示
替换命令
:s/old/new 用new去替换当前行匹配到的第一个old
:%s/old/new 用new去替换全文各行的第一个old
:s/old/new/g 用new替换当前行的所有old
:s/old/new/g 将全文中的old用new替换
此外还可以指定行数进行替换:
如要替换11-23行所有的old,可以键入如下指令:
:11,23 s/old/new/g
若要在23-35行所有行前加4个空格以示缩进,可以键入如下指令:
:23,35 s/^/ /g
撤销与重做
u 撤销上一步操作
Ctrl+r 重做,即对撤销的撤销
删除
x 删除当前字符,即光标在哪个位置就删除那个位置的字符
5x 从当前光标开始往后删除5个字符
X 删除当前字符前的一个字符
5X 从当前光标往前删除5个字符(不包括当前字符)
d$ 删除当前字符至行尾所有单词
d^ 删除当前字符至行首前的所有字符(不包括当前字符)
dw 删除当前字符至单词尾部
daw 删除光标所在的单词
dd 删除光标所在行的整行
ndd 删除光标所在行及其下共5行
S 删除当前行并进入编辑模式
dgg 删除当前行至文档首部的所有行 效果等同于末行模式下的:1,.d
dG 删除当前行至文档尾部的所有行 效果等同于末行模式下的:.,$d($表示最后一行)
末行模式下还可以进行更加复杂的操作而不需要考虑光标的位置
如删除第11行至34行的操作就可以这样
:11,34d
复制粘贴
yy 复制光标所在的当前行
5yy 复制光标及下面共5行
yG 复制当前行至文档开始的所有行
ygg 复制当前行至文档结束的所有行
yw 复制当前光标所在处的一个单词
J 将下一行内容移动到本行的末尾
同样的在末行模式下也可以跨行复制,如复制11至34行
:11,34y
把10至23行的内容移动到56行之后,可以使用
:10,23 m 56
使用p把dd删除或yy复制的内容粘贴出来
p 在当前行的下面粘贴
P 在当前行的上面粘贴
快速操作:
ddp 快速交换当前行及下一行
yyp 快速复制当前行并粘贴
保存及退出
:wq 保存并退出
:x 保存并退出
:q 直接退出
:q! 强制退出不做更改
zz 保存并退出
移动
移动操作并不常用,毕竟↑↓←→键就可以完成而且无需记忆
h 光标向←移动1个字符 10h 光标向←移动10个字符
l 光标向→移动1个字符 10l 光标向→移动10个字符
j 光标向↑移动1个字符 10j 光标向↑移动10个字符
k 光标向↓移动1个字符 10k 光标向↓移动10个字符
gg 移动到文档头部,等同于:1
G 移动到文档尾部,等同于:$
当然你也可以在打开文件时就指定行数,比如想打开文件时直接到最后一行,可以使用
vim + FILENAME
打开文件直接到哪一行
vim +n FILENAME #打开文件直接到第n行,而不用打开文件后在移动光标
可视化
v 进入可视化,左下角显示可视化或者VISUAL
V 进入可视行,左下角显示可视行或者VISUAL LINE
Ctrl+v 进入可视块,左下角显示可视块或者VISUAL BLOCK
上述选择使用上下左右键,非鼠标
d 删除选中文本
y 复制选中文本
gu 选中区域转为小写
gU 选中区域转为大写
g~ 大小写互调
> 向右缩进一个单位
< 向左缩进一个单位
其他操作
:!COMMAND执行命令,如:!ls会列出本文档当前目录的所有文件而不用退出文档
:suspend或Crtl-Z挂起vim,回到shell,可以使用fg返回vim编辑器
:set nu 设置行号,可将此命令写入vim的配置文件/etc/vimrc或者~/.vimrc,就可以保证每次打开都显示行数
:set ff=unix 设置文档的dos编码为unix风格,在vim打开乱码时可以尝试使用该命令修正
:set syntax=? 设置文档的语言为?,如c,python,sh
:set syntax获得目前的文档语言
:set paste 解决复制文字来时缩进乱的问题
复杂注释
:3,10 s/^/#/g 注释3至5行
:3,10 s/^#//g 取消注释3至10行
:1,$ s/^/#/g 注释整个文档
:1,$ s/^#//g 取消注释整个文档 #全选整篇文档也可使用%来替换