掌握vim编辑器这些实用命令,让编辑效率翻倍

vim编辑器是 Linux 系统中备受推崇的文本编辑器之一,其丰富的命令为编辑工作提供了极大的便利。本文将介绍一些常用的vim命令,掌握这些命令,可以在编辑过程中更加得心应手,提高工作效率。

vim编辑器介绍

vi(Visual Interface)是一款功能强大的文本编辑器,广泛应用于Linux和Unix系统。vim(Vi IMproved)是vi的增强版,如果系统中已经安装了vim,那么在使用"vi 文件名"命令时(本文绿色部分的内容为命令及其参数),实际上会调用vim来打开文件。虽然它的界面相对简陋,但是通过熟练使用其命令,我们可以大大提高编辑效率。

vim编辑器主要有两种工作模式:命令模式和编辑模式。

命令模式:这是使用vi编辑器打开文件后的默认模式,也可以在任何时候通过按下Esc键从编辑模式切换到该模式。在此模式下,用户可以进行保存、恢复、退出、查找和替换等操作,也可以。

编辑模式:在命令模式下,输入“i、a、o、s”等字母可以进入编辑模式。在此模式下,可以在光标所在位置插入新的文本或修改现有的文本。可以通过光标键来移动光标到新的位置,然后继续编辑。

进入/退出vim编辑器

vi file 打开文件,文件不存在则新建文件

:q  未修改时退出
:q!  放弃修改并退出
:x  保存修改并退出
:x!  强制保存修改并退出
:e!  放弃修改重新载入文件

命令模式基本操作

显示/隐藏行号:

:set nu  显示行号,nu是number的简写
:set nonu  隐藏行号,nonu是nonumber的简写

光标移动:

h  左移一个字符
j  下移一行
gj  在折行文本中下移一行
k  上移一行
gk  在折行文本中上移一行
l  右移一个字符
e  跳到下一个单词词尾
ge  跳到上一个单词词尾
w  跳到下一个单词词首
b  跳到上一个单词词首
0  跳到行首
^  跳行首第一个非空字符处
$  跳到行尾
:n  n为具体数字,跳到第n行
gg  跳到文件首行
G  跳到文件末行
ctrl+f  向下翻页
ctrl+b  向上翻页

编辑:

i  进入编辑模式,可以在光标位置插入字符
I  (大写i)进入编辑模式,可以在光标所在行首插入字符
a  光标后移一位进入编辑模式,可以在光标位置插入字符
A  进入编辑模式,可以在光标所在行尾插入字符
o  进入编辑模式,在光标所在行下方新建一行
O  进入编辑模式,在光标所在行上方新建一行
r  进入编辑模式,可以在光标位置替换一个字符
R  进入编辑模式,可以从光标位置开始替换字符
s  删除光标位置的字符然后进入编辑模式,可以在光标位置插入字符
S  删除光标所在行的字符然后进入编辑模式,可以在光标位置插入字符
x  删除光标位置的字符
X  删除光标位置前面的字符
D  删除光标位置及之后的字符
dd  剪切光标所在的行
diw  剪切光标处的单词
daw  剪切光标处的单词和其后的空白字符
yy  复制光标所在的行
yiw  复制光标处的单词
yaw  复制光标处的单词和其后的空白字符
p  粘贴剪切/复制的行到光标所在的行下方,或者粘贴剪切/复制的单词到光标位置后面
u  撤销上一次操作

命令前面可以添加数字,表示重复执行该命令的次数。例如:

4j  表示光标向下移动四行
3dd  表示剪切当前行及其下面的两行共三行内容
2p  表示将复制的内容粘贴二次
3u  表示撤销前面三次操作

搜索/替换:

/pattern  从当前位置向文件尾开始搜索,按回车键跳转到第一个匹配项
?pattern  从当前位置向文件头开始搜索,按回车键跳转到第一个匹配项
n  跳转到下一个匹配项
N  跳转到上一个匹配项
:s/pattern/新字符串/g  将当前行中的所有与pattern匹配的内容替换为新字符串,g表示全局替换,省略g或者省略/g,则仅替换第一个匹配项
:7,9s/pattern/新字符串/g  在第7-9行进行替换,省略g或者省略/g,则每行仅替换第一个匹配项
:%s/pattern/新字符串/g  在整个文件中进行替换,省略g或者省略/g,则每行仅替换第一个匹配项

命令模式高级操作

分屏查看:

:split  将文件分为上下两个窗口查看
:vsplit 将文件分为左右两个窗口查看
ctrl+w+w  (按住ctrl,然后按两次w)在不同窗口之间切换
ctrl+w+h/j/k/l  切换到左、下、上、右一个窗口
ctrl+w+v  (按住ctrl,先后按w和v)将当前窗口分为左右两个窗口查看
:q  退出当前窗口

标签页编辑多个文件:

:tabedit file1  在同一个窗口中打开另一个文件,以标签页显示
:tabn  切换到下一文件
:tabp  切换到上一文件

一次编辑多个文件:

vi file1 file2 ...  一次打开多个文件
:n  切换到下一文件
:N  切换到上一文件