vi常用命令

a #当前字符后添加
A #行尾添加文本
o #光标下方开始一个新行
O #光标上方开始一个新行
ZZ #保存并退出
zz #当前行与光标一起移到窗口中间
w #光标移至下一个单词的词首,W 的作用与 w 相同但以空格作为单词的分隔
e #光标移至下一个单词的词尾,E 的作用与 e 相同但以空格作为单词的分隔
b #光标移至前一个单词的词首,B 的作用与 b 相同但以空格作为单词的分隔
ge #光标移至前一个单词的词尾
$ #光标至行尾
0 #行首
^ #行首第一个非空字符
fx #向前查找本行中的字符 x
Fx #向左查找本行中的字符 x
tx #与 fx 相似,只是光标会移到目标字符的前
Tx #与 Fx 相似,只是光标会移到目标字符的前
#以上四个命令执行后可以使用";"重复向前查找,","则用于反向查找
% #向前找到第一个括号字符,或者匹配对应的一对括号
G #移至文件最后一行
gg #移至文件第一行
1G #移至文件第一行
50G #移至第50行
50% #移至文件的50%处,也就是中间的位置
H #移至当前窗口文本的最顶端
M #移至当前窗口文本的中间
L #移至当前窗口文本的最下方
^U #向上滚动半屏
^D #向下滚动半屏
^E #上滚一行
^Y #下滚一行
^F #向下翻页
^B #向上翻页
zz #光标所在行移至窗口中间
zt #光标所在行移至窗口顶端
zb #光标所在行移至窗口底端
/str #查找单词"str"
?str #反向查找单词"str"
#以上两个命令执行后可使用 n 或者 N 正向或反向查找下一个匹配的字符串
/str> #查找以"str"结尾的单词
/<str #查找以"str"开头的单词
* #取得当前光标上的单词,并向前查找匹配的字符串
# #取得当前光标上的单词,并反向查找匹配的字符串
`` #使用类似"G"这样的移动命令时,会有标记留下,本命令可以回到原来的地方
'' #功能同上
^O #跳到一个较老的地方
^I #跳到一个较新的地方
ma #在当前位置作标记,a可以是字母a~z
`a #跳到标记a处
'a #跳到标记a所在行的行首
:marks #列出所有标记
cw #删除一个词,切换至插入模式
cc #修改一整行
x #删除当前光标下的字符
dl #删除当前光标下的字符
X #删除当前光标前的字符
dh #删除当前光标前的字符
C #修改至行尾
c$ #修改至行尾
s #修改一个字符
cl #修改一个字符
S #修改一整行
cc #修改一整行
r #替换单个字符
. #重复最后一次的修改操作
d0 #删至行首
d$ #删至行尾
u #撤销
U #撤销一整行的修改
^u #删除输入方式下所输入的文本
J #把下一行合并到当前行尾
v #启动可视模式,选择文本
V #启动可视模式,按行选择文本
^V #启动可视模式,按区块选择文本
aw #可视模式下选择单词
iw #可视模式下选择单词(无空格)
as #可视模式下选择句子
is #可视模式下选择句子(无空格)
ap #可视模式下选择段落
ip #可视模式下选择段落(无空格)
o #可视模式下转到可视区域另一端
p #粘贴文本
P #与p类似,只是插入的方向相反
xp #交换两个字符,当前光标下以及下一个
ddp #上下两行调换
y #拷贝文本,常见组合命令:yw, ye, y$等
yy #拷贝一整行
Y #拷贝一整行,同上
"yy #拷贝当前行至剪贴板
"
p #从剪贴板粘贴
R #进入替换模式
~ #改变光标下字符的大小写
I #称到当前行的第一个非空字符并启动插入模式
A #移到行尾启动插入模式
daw 光标位于单词中间位置,使用本命令可以删除整个单词
dl #删除当前字符(与x命令功能相同)
d0 #删除到某一行的开始位置
d^ #删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw #删除到某个单词的结尾位置
d3w #删除到第三个单词的结尾位置
db #删除到某个单词的开始位置
dW #删除到某个以空格作为分隔符的单词的结尾位置
dB #删除到某个以空格作为分隔符的单词的开始位置
d7B #删除到前面7个以空格作为分隔符的单词的开始位置
d) #删除到某个语句的结尾位置
d4) #删除到第四个语句的结尾位置
d( #删除到某个语句的开始位置
d} #删除到某个段落的结尾位置
d{ #删除到某个段落的开始位置
d7{ #删除到当前段落起始位置之前的第7个段落位置
dd #删除当前行
d/text #删除到文本中出现 text 所指定的位置前面
dfc #删除到文本中出现字符 c 的位置前面
dtc #删除当前行直到下一个字符“c”所出现位置之间的内容
D #删除到某一行的结尾
d$ #删除到某一行的结尾
5dd #删除从当前行所开始的5行内容
dL #删除直到屏幕上最后一行的内容
dH #删除直到屏幕上第一行的内容
dG #删除直到工作缓存区结尾的内容
d1G #删除直到工作缓存区开始的内容
dgg #删除直到工作缓存区开始的内容
qq010lDjq + 9999@q #保留每一行的前10个字符
:%s/^(.{10}).$/\1/g #保留每一行的前10个字符
:%s/^.{10}// #删除每一行前10个字符
:%s/^(.{9}).
$/\1/g #删除每一行前10个字符
:11,12m13 #移动11-12行(包括11,12)到13行之下
:11,12co13 #复制11-12行(包括11,12)到13行之下
:11,12d #删除11-12行(包括11,12)行
:.,$d #删除当前行到最后一行
:s/str1/str2/ #用字符串 str2 替换当前行中首次出现的字符串 str1
:s/str1/str2/g #用字符串 str2 替换当前行中所有出现的字符串 str1
:s/str1/str2/gi #用字符串 str2 替换当前行中所有出现的字符串 str1,在查找时不区分大小写
:%s#/usr/bin#/bin#g #把正文中所有 /usr/bin 换成 /bin,其中#是转义字符,表明其后的/字符是具有实际意义的字符,不再是分隔符
:.,$s/str1/str2/g #用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$s/str1/str2/g #用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g #用字符串 str2 替换正文中所有出现的字符串 str1
:%s/str1/str2/g #用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s/str2/str3/g #将所有包含 str1 的行里面的 str2 替换为 str3
:%s/str1/str2/gc #用字符串 str2 替换正文中所有出现的字符串 str1 并让用户确认
:10,20s/^/#/ #将第10行至第20行的最前面插入#
:%s/$/str/g #在整个文件每一行的行尾添加 str
:%s/:.//g #删除所有行从冒号开始直到行尾的所有部分
:%s/\s+$// #删除所有行尾空白
:%s/ $// #删除行尾空格
:g/(foo)(bar)/s/\2/\1baz/g #将foobar替换成foobaz
:s/[^]
$// #把最后一个包括这个后面的所有字符去掉
:0,$d #删除所有内容
ggdG #删除所有内容
%s/^M//g #删除dos换行,命令中的 ^M = Ctrl v + Ctrl m
:%s/%u3000//g #删除全角空格
:g/^(.
)$\n\1$/d #删除重复行
:g!/str/d #删除不含字符串 str 的行
:v/str/d #删除不含字符串 str 的行
:g/str1/,/str2/d #删除第一个含str1到第一个含str2之间的行
:v/./.,/./-1join #多个空行压缩为一个空行
:g/^$/,/./-j #多个空行压缩为一个空行
:g/^\s*$/d #删除所有空行,包括含空白字符的行
:g/^$/d #删除所有空行
:set ignorecase #忽略大小写
:w !sudo tee % #使用 root 权限保存,%表示当前编辑文件的文件路径

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容