vim常见使用命令

来源:互联网 发布:数据分类汇总步骤文字 编辑:程序博客网 时间:2024/05/30 23:03

1.vim的三种模式:

一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字。
编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式。
命令模式:在一般模式下按“:”(冒号)就会进入命令模式,左下角会有一个冒号出现,此时可以敲入命令并执行按Esc可回到一般模式。

2.基本操作:

2.1 vim进入文件

vim filename:打开或新建文件,并将光标置于第一行首
vim +n filename :打开文件,并将光标置于第n行首
vim +$ filename :打开文件,并将光标置于最后一行首
vim +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vim -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vim filename....filename :打开多个文件,依次编辑

2.2 常用操作

列出行号:(:set nu)
跳到文档指定行:(:30),调到第30行

保存编辑:(:w)
保存编辑并退出:(:wq)
强制保存编辑并退出:(:wq!)
退出:(:q)
强制退出:(:q!)

复原:(u),假如误操作一个指令,可以马上按u,回复到上一个操作
选定:v,可以选择指定的区域进行操作,可以进行删除(d)、复制(y)

2.3 跳转

跳转到指定行:(:30),调到第n行

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。也可以直接用上下左右来控制。
向下跳转100行:100j
向上跳转100行:100k
向左跳转20个字符:20h
向右跳转20个字符:20l

按「ctrl」+「b」:屏幕往“后”移动一页。
按「ctrl」+「f」:屏幕往“前”移动一页。
按「ctrl」+「u」:屏幕往“后”移动半页。
按「ctrl」+「d」:屏幕往“前”移动半页。

双击  [g]:移到文档的开头。按0:移到文档的开头位置
按「G」:移动到文档的最后。
按  [100G]: 移到文件的第100行
按「$」:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”

L:移到屏幕的最后一行
M:移到屏幕的中间一行
H:移到屏幕的第一行

按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」(不是大写i):光标移到该行的第#个位置,如:5l,56l
+或return:移到下一行的第一个字符
-:移到当前行的第一个非空字符

0或| 移到当前行的第一列
n| 移到当前行的第n列

z:将当前行置为屏幕的中央
nz: 将当前行上的第n行置为屏幕的中央
z-:将当前行置为屏幕的底行
nz-:将当前行上的第n行置为屏幕的底行

2.4 查找

:set noic 查找时忽略大小写
:set list 显示制表符(^I)和行尾符号
:set all 显示所有可用设置

寻找指定字符串:(/test),向前查找匹配test的行
寻找指定字符串:(?test),向后查找匹配test的行

2.5 执行命令

:!command 执行shell的command命令,如:!ls
:!! 执行前一个shell命令
:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容
:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令
:sh 将启动一个子shell,使用^d(ctrl+d)返回vi

3 行操作

3.1 删除

删除当前所在行的整行:dd
删除指定行:g/pattern/d,删除含有匹配特定字符的行
删除不包含指定字符的行:v/pattern/d或者g!/pattern/d
从x行删除到当前行:x,.d,例如现在在第2行,4,.d会删除原有的2-4行,注意:当前行号要大于x
从当前行删除到x行:.,xd,例如现在在第2行,.,4d会删除原有的2-4行,注意:当前行号要小于x
从x行删除到当前行后第三行:x,.+3d,例如现在在第4行,使用2,+3d会删除原有的2-7行
从x行删除到当前行前一行:x,.-1d ,例如现在在第5行,使用2,.-1d会删除原有的2-4行
删除行,从当前行开始直到文件结束:dG

3.3 复制

yy:复制光标所在行
#yy:例如6yy表示拷贝从光标所在的该行往下数6行之文字
yw:复制单词
y$:复制到行尾
p:粘贴已经复制的行

选定:v,可以选择指定的区域进行操作,可以进行删除(d)、复制(y)

3.4 查找替换

寻找指定字符串:(/test),查找匹配test的行

替换:
替换当前行中匹配的字符串:s/test/hello/g(将test替换为hello)
替换文档中匹配的所有行:1,$s/test/hello/g
替换文档中匹配的指定行的字符串:10,20s/test/hello/g(从第10行到第20行中的匹配项)
替换文档中匹配的指定行的字符串:10,20s/test/hello/gc(从第10行到第20行中的匹配项,替换前提醒)
替换文档中光标所在行到指定行的字符串:,20s/test/hello/g(从光标所在行到第20行)

4.字符串操作

4.1 编辑

a:在光标后插入文本
A:在当前行最后面插入文本
i:在光标前插入文本
I:在当前行最前面插入文本
o:在当前行的下边插入新行
O:在当前行的上边插入新行

4.2 删除

x:每按一次删除光标所在位置的后面一个字符。
#x:例如,6x表删除光标所在位置的后面6个字符。
X:大字的X,每按一次删除光标所在位置的前面一个字符
#X:例如,20X表删除光标所在位置的前面20个字符

dw:删至下一个词的开头(包含标点)
db:删除光标前面的字
ndb:从当前行开始往前删除n字
ndw:从当前光标处往后删除n个字
d$:从当前光标处往后删除到行尾

dd:删除光标所在行

4.3 替换

r: 取代光标所在处的字符
R:取代字符直到按Esc为止

cw:更改光标所在处的字到字尾$处,更改之后进入“insert"模式
c#w:例如,c3w代表更改3个词(包含标点)