我最常用的vi命令
一、移动:
hjkl左下上右 移动
o在光标所在行后插入一空行。
O在光标所在行前插入一空行。
0移动光标到行首
$移动光标到行尾
Ctrl + f向后滚一页。
Ctrl + d向后滚半页。
Ctrl + b向前滚一页。
Ctrl + u向前滚半页。
Ctrl + e屏幕向下滚一行。
Ctrl + y屏幕项上滚一行。
H,L当前屏幕的顶端/末尾
(n)G:按一个数字,然后按G,将光标跳到第n行,1G就是文件第一行,如果不打数字,则跳到文件末尾。
二、操作
i前插入 I在行首插入
a后插入 A 在行尾插入
r替换
dd删除整行
dw删除光标所在的单词
D或者d$删除光标之后的内容
u恢复上一次修改,撤销恢复:ctrl+r
yy 拷贝一行 2yy拷贝2行,依次类推
yw 拷贝当前到单词尾
y$拷贝光标位置到行尾
p 粘贴
块复制(最少记忆的方法 )
起始位置ma
结束位置y`a
粘贴位置p
w保存 w filename另存为
q退出 q!不保存退出
三、替换
在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new
在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g
在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g
进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc
全文替换时,还可以输入:1,$s/old/new/g。 其中1,$表示从第一行到文本结束。
四、其他
:/查找,配合n查找下一个,N查找上一个
:sh切换到shell,exit切换回来
还有一种很常见的情况:vi 修改了一个文件,保存的时候才发现readonly,原因是权限不够。编辑半天的东西,总不能退出重来。而再动用鼠标就太low了。如果当前用户被管理员授权sudo ,则有解决办法:w !sudo tee %,输入密码,连续几次回车,然后:!q退出。