VIM(VI)常用命令思维导图

命令

删除(剪贴)

行删除(剪贴)

D:(相当于 d$) 删除当前光标到行尾
d^:删至行首
dd :删除当前行
d**n**G: 删除第n行到当前行
dG :删除当前行到最后一行
S :删除当前行,并处于可编辑状态
C :删除到行尾,并处于可编辑状态
:n,m d:将第n行到第m行的内容删除

字符删除(剪贴)

x向后删除一个字符
n**x向后删除**n个字符
X向前删除一个字符
n**X向后删除**n个字符
s 删除当前光标所在字符,并处于可编辑状态
i 在光标之前插入
a 在光标之后插入

单词删除(剪贴)

diw 删除光标所在的单词,不包括空白字符
daw 删除光标所在的单词,包括空白字符
dw 当当前光标位置删除到下一个单词词首
n**dw或**n**dW 删除光标处开始及最后的**n-1个词

复制粘贴

yy 复制当前行
n**yy 复制从当前行开始的**n
y**n**w 复制n个单词
y**n**l 复制n个字符
y$ 复制当前光标至行尾处
p(小写) 粘贴到光标之后
P(大写) 粘贴到光标之前

撤销及重复

u 撤销前次操作
ctrl+r 重复前次操作
:e! 文档还原到最原始的状态

搜索

/str 从光标位置向下搜索str
?str 从光标位置向上搜索str
n 查找下一个
N 查找上一个

替换

格式::[range]s/from/to/[flags]

[range] n,m

不写range:默认为光标所在的行
n:一个数字 代表第n
n,m:两个数字,表范围 nm行(n、m可以用.(光标所在的行)$(最后一行)表示)
%:所有行(与 1,$ 等价)

[flags]

无:只对指定范围内的第一个匹配项进行替换。
g :对指定范围内的所有匹配项进行替换。
c :c是confirm的缩写,在替换前请求用户确认。
e :忽略执行过程中的错误。

例子

  • :s/regexp/replacement/ 替换当前行第一个匹配

  • :s/regexp/replacement/g 替换当前行所有匹配

  • :n,$s/regexp/replacement/ 替换第n行到最后行一中每一行的第一个匹配(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

  • :n,$s/regexp/replacement/g 替换第n行到最后行一中每一行中所有匹配

  • :%s/regexp/replacement/ (等同于 :g/regexp/s//replacement/) 替换每一行的第一个匹配

  • :%s/regexp/replacement/g (等同于 - :g/regexp/s//replacement/g) 替换每一行的所有匹配

移动

单词

w:下一个单词第一字符
W:下一个长单词第一字符
e:下一个单词最后字符
E:下一个长单词最后字符
b:前一单词第一字符
B:前一长单词第一字符
ge:前一个单词的最后一个字符

0:到行首
$:到行尾
gg:到第一行
G:到最后一行
n**G:到第**n

(:到句首
):到句尾

{:到段首
}:到段尾

屏幕

ctrl+u:向上滚动半屏
ctrl+d:向下滚动半屏
PgUp:同ctrl+b 向上滚动一屏
PgDn:同ctrl+f 向下滚动一屏

多行拷贝移动

:n,m co p:将n行到m行之间的内容拷贝到第p行下
:n1,n2 m p:将n1行到n2行之间的内容移动到第p行下

退出保存

:w[!][filename]: 保存 !表示强制保存 filename表示另存为filename
:n,m w filename :将n行到m行的内容另存为filename
:q[!]:退出 !表示强制退出
:qw[!][filename]: 保存并退出 !表示强制保存并退出 filename表示另存为filename,并退出

其他

:!command:执行shell命令command
:n,m w!command:将文件中n行到m行的内容作为command的输入并执行,若不指定n,m,则代表将整个文件内容作为command的输入执行
:r!command:将命令command的输出结果放到当前行
:set nu:显示行号
:set nonu:取消行号
:r filename:把filename文件的内容插入到当前光标所在位置下
ctrl+g:当前行信息
g ctrl+g:字数统计

思维导图

vim命令思维导图

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章