刘曙尘

导航

Linux vim 命令大全

vim的三种工作模式

命令模式、输入模式和编辑模式的相互转换,如图

命令模式:使用 Vim 编辑文件时,默认处于命令模式。在此模式下,可以使用上、下、左、右键或者 k、j、h、l 命令进行光标移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。

输入模式:在输入模式下可以对文件执行写操作。进入输入模式的方法是输入 i、a、o 等插入命令,编写完成后按 Esc 键即可返回命令模式。

编辑模式:如果要保存、查找或者替换一些内容等,就需要进入编辑模式。编辑模式的进入方法为:在命令模式下按" :"键,Vim 窗口的左下方会出现一个" :"符号后,这时就可以输入相关的指令进行操作了。操作完按Enter键执行,指令执行后会自动返回命令模式。

 使用Vim打开文件

为了避免误操作我们将/etc下的profile复制到/tmp下进行操作,命令如下:

[root@localhost /]# cp /etc/profile  /tmp/profile.vim

使用vim 进入profile文件的命令模式

操作 功能描述
vim profile.vim 只是打开文件
vim +20 /tmp/profile.vim

打开文件后,直接定位指定行数处 ,

例如,打开 /tmp/profile.vim文件时直接进入第 20 行 

vim +/future /tmp/profile.vim

打开文件后,直接定位指定行数处 ,

例如,打开 /tmp/profile.vim文件时直接定位到"future"字符串所在行

打开文件后,接下来开始对文件进行操作。 

进入输入命令模式

从命令模式进入输入模式可以按下 I、i、A、a 、O、o、等键来完成,不同的键只是光标所处的位置不同而已。当进入输入模式后,在 Vim 编辑窗口的左下角会出现"INSERT"标志,这就代表我们可行写入操作了,在vim中光标是停留在字符上的,例如在光标后面插入就是指在光标所在的字符的后面插入;

操作 功能描述
i

在当前光标所在位置插入输入的文本,光标后的文本相应向右移动

I 在光标所在行的行首插入输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
a

在当前光标所在位置之后插入输入的文本

A

在光标所在行的行尾插入输入的文本,相当于光标移动到行尾再执行 a 命令

o

在光标所在行的下面插入新的一行。光标停在空的行首,等待输入文本

O

在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

光标移动命令

在由命令模式中 Vim 提供了大量的光标移动命令,这些命令需要在命令模式下执行。 

以字符为单位移动

在Vim中通过上、下、左、右方向键来移动光标,除此之外还可以通过以下按键来移动。

操作 功能描述
h 左移一个位置
j 往下一行
k 往上一行
l 右移一个位置

以单词为单位移动

操作 功能描述
w 移动光标到下一个单词的单词首
b 移动光标到上一个单词的单词首
e 移动光标到下一个单词的单词尾

移动到行尾或者行首

操作 功能描述
$ 将光标移至行尾
0 或 ^ 将光标移至行首
n$ 将光标移至当前光标所在行的之后 n 行的行尾

移动到一行的指定字符处

操作 功能描述
fp 光标定位到字符 p 处。f 命令有一个使用条件,即光标需在指定字符前

移动到匹配的括号处(%命令)

操作 功能描述
 %   将光标移动到与一个"("匹配的")"(对于 [] 和 {} 也是一样的处,需要将光标先定位在要匹配的符号处

移动到指定行处(nG 或 :n 命令)

操作 功能描述

nG

将光标快速地定位到指定行的行首

:n

将光标快速地定位到指定行的行首

 査找指定字符串 

操作 功能描述

命令模式中输入"/ 要査找的字符串", 再按一下回车键

从光标所在行开始向下査找指定的字符串

命令模式中输入"?要査找的字符串", 再按一下回车键

从光标所在行开始向上査找指定的字符串

/^Path

要査找一个以Path 为行首的行
Path$ 要査找一个以 Path 为行尾的行

说明:如果匹配的字符串有多个,则可以按"n"键向下继续匹配査找,按"N"键向上继续匹配査找。如果在文件中并没有找到所要査找的字符串,则在文件底部会出现"Pattern not found"提示.,在査找过程中需要注意的是,要査找的字符串是严格区分大小写的,如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。如果在字符串中出现特殊符号,则需要加上转义字符"\"。常见的特殊符号有 \、*、?、\ $ 等。如果出现这些字符,例如,要査找字符串"10$",则需要在命令模式中输入"/10\$"。

使用Vim进行替换

操作 功能
x 删除光标位置指定的字符
dd 删除光标所在的行
u 撤销最近的修改
U 撤销对当前行上做的所有修改
r 替换光标位置上的一个字符
R 替换从光标位置开始的字符,同时改变vi到文本输入模式
.(点) 重复上一次的修改
%s/源字符串/替换的字符串/g 替换整篇文档的字符串,例如: %s/root/liudehua/g  全文査找"root",然后替换成"liudehua"
替换起始处,替换结束处 s/源字符串/替换的字符串/g 替换范围内的字符串,例如:10,20 s/root/liudehua/g  只替换从第 10 行到第 20 行的"root"

说明:按下"R"键替换后,Vim 编辑文件左下角会显示"REPLACE",进入替换状态。直到按 Esc 键才会退出替换;否则将一直处于替换状态。

 使用 Vim 进行删除、粘贴、复制

操作 功能
d 删除指定位置的文本,并存到临时的缓冲区中。可以使用put操作符(p或P键)访问这个缓冲区
dd 删除整行,通过在前面加上数字来删除当前光标所在行下的多行
dG 删除从光标所在行一直到文件末尾的全部内容
起始行,终止行d 删除指定范围的行,例如:删除第 1~3 行,则输入":1, 3d",会提示"3 fewer lines"
y 将指定位置的文本复制到临时缓冲区。可以使用put操作符访问这个缓冲区
yy 复制单行,通过在前面加上数字来复制当前光标所在行下的多行
P 将指定缓冲区的内容放到当前光标的位置之上
p 将指定缓冲区的内容放到当前光标的位置之下
J 将两行进行连接,使其成为一行

说明:在使用d删除时,此时被删除的内容并没有真正删除,都临时放在了内存中。将光标移动到指定位置处,按下"p"键,就可以将刚才删除的内容又粘贴到此处。在软件开发中可能需要将连续两行进行互换,就可以将上面的一行过"dd"键删除,再将光标移动到下面,通过"p"键将其重新粘贴,这样就能够达到两行互换位置的目的。

 保存退出命令

操作 功能描述
:wq 保存文件,退出vi编辑器
:w 保存文件,但不退出vi编辑器
:q 退出vi编辑器
:q! 不保存文件,退出vi编辑器 
ZZ 保存文件,退出vi编辑器

说明:在对文件没有写权限的时候(显示 readonly)需要在命令后面加!表示强制退出,例如:"w!"或"wq!"就意味着强制保存或强制保存退出,但如果你是文件的所有者或者 root 用户,就可以强制执行;在保存时,如果要保留源文件,而另存为其他的文件,可以用"w新文件名",如"w /tmp/shadow.vi"。

posted on 2020-05-13 13:46  刘曙尘  阅读(316)  评论(0编辑  收藏  举报