vim常用指令

熟悉一些vim常用的指令能提高编辑效率,可以根据github上的一个链接进行学习
https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt?utm_source=wechat_session&utm_medium=social&utm_oi=955459577458679808
这个链接介绍了很多指令,我把自己觉得比较常用的单独挪出来。

##############################################################################
# VIM CHEATSHEET (中文速查表)  -  by skywind (created on 2017/10/12)
# Version: 43, Last Modified: 2018/12/26 15:17
# https://github.com/skywind3000/awesome-cheatsheets
##############################################################################


##############################################################################
# 光标移动
##############################################################################

h                   光标左移,同 <Left> 键
j                   光标下移,同 <Down> 键
k                   光标上移,同 <Up> 键
l                   光标右移,同 <Right> 键
CTRL-F              下一页
CTRL-B              上一页
CTRL-U              上移半屏
CTRL-D              下移半屏
0                   跳到行首(是数字零,不是字母O),效用等同于 <Home> 键
^                   跳到从行首开始第一个非空白字符
$                   跳到行尾,效用等同于 <End> 键
gg                  跳到第一行,效用等同于 CTRL+<Home>
G                   跳到最后一行,效用等同于 CTRL+<End>
:n                  跳到第n行,比如 :10<回车> 是移动到第十行
10%                 移动到文件 10% 处
w                   跳到下一个单词开头 (word: 标点或空格分隔的单词)
e                   跳到下一个单词尾部 (word: 标点或空格分隔的单词)
b                   上一个单词头 (word: 标点或空格分隔的单词)
ge                  上一个单词尾
H                   移动到屏幕上部
M                   移动到屏幕中部
L                   移动到屏幕下部
fx                  跳转到下一个为 x 的字符,2f/ 可以找到第二个斜杆
Fx                  跳转到上一个为 x 的字符
;                   跳到下一个 f/t 搜索的结果
,                   跳到上一个 f/t 搜索的结果


##############################################################################
# 插入模式:进入退出
##############################################################################

i                   在光标处进入插入模式
I                   在行首进入插入模式
a                   在光标后进入插入模式
A                   在行尾进入插入模式
o                   在下一行插入新行并进入插入模式
O                   在上一行插入新行并进入插入模式
gi                  进入到上一次插入模式的位置
<ESC>               退出插入模式
CTRL-[              退出插入模式(同 ESC 等价,但更顺手)j

##############################################################################
# 文本编辑
替换c,删除d,复制y和选中v的原理是一样的,i表示在内部,a表示包括边界。
##############################################################################

r                   替换当前字符
R                   进入替换模式,直至 ESC 离开
s                   替换字符(删除光标处字符,并进入插入模式,前可接数量)
S                   替换行(删除当前行,并进入插入模式,前可接数量)
c^                  改写到行首(第一个非零字符)
c$                  改写到行末
cw                  改写光标开始处的当前单词
ciw                 改写光标所处的单词
ci"                 改写双引号中的内容
ci'                 改写单引号中的内容
ci)                 改写小括号中的内容
ci]                 改写中括号中内容
ci}                 改写大括号中内容
ct(                 改写到小括号前
x                   删除当前字符,前面可以接数字,3x代表删除三个字符
X                   向前删除字符
dd                  删除当前行
d0                  删除到行首
d^                  删除到行首(第一个非零字符)
d$                  删除到行末
dw                  删除当前单词
diw                 删除光标所处的单词
di"                 删除双引号中的内容
di'                 删除单引号中的内容
di)                 删除小括号中的内容
di]                 删除中括号中内容
di}                 删除大括号中内容
dt(                 删除到小括号前
dgg                 删除到文件头部
dG                  删除到文件尾部
u                   撤销
CTRL-R              撤销上一次 u 命令
J                   链接多行为一行
.                   重复上一次操作
~                   替换大小写
gUiw                将单词转成大写
guiw                将当前单词转成小写
guu                 全行转为小写
gUU                 全行转为大写
<<                  减少缩进
>>                  增加缩进
==                  自动缩进
CTRL-A              增加数字
CTRL-X              减少数字

##############################################################################
# 复制粘贴
##############################################################################

p                   粘贴到光标后
v                   开始标记
y                   复制标记内容
V                   开始按行标记
CTRL-V              开始列标记
y$                  复制当前位置到本行结束的内容
yy                  复制当前行
yiw                 复制当前单词
3yy                 复制光标下三行内容
v0                  选中当前位置到行首
v$                  选中当前位置到行末
viw                 选中当前单词
vi)                 选中小括号内的东西
vi]                 选中中括号内的东西
vi}                 选中大括号内的东西
va)                 选中小括号内的东西(包含小括号本身)
va]                 选中中括号内的东西(包含中括号本身)
va}                 选中大括号内的东西(包含大括号本身)
gv                  重新选择上一次选中的文字
:set paste          允许粘贴模式(避免粘贴时自动缩进影响格式)
:set nopaste        禁止粘贴模式
:[range]y           复制范围,比如 :20,30y 是复制20到30行,:10y 是复制第十行
:[range]d           删除范围,比如 :20,30d 是删除20到30行,:10d 是删除第十行
ddp                 交换两行内容:先删除当前行复制到寄存器,并粘贴


##############################################################################
# 查找替换
##############################################################################

/pattern            从光标处向文件尾搜索 pattern
?pattern            从光标处向文件头搜索 pattern
n                   向同一方向执行上一次搜索
N                   向相反方向执行上一次搜索
*                   向前搜索光标下的单词
#                   向后搜索光标下的单词
:s/p1/p2/g          将当前行中全替换p1为p2
:%s/p1/p2/g         将当前文件中全替换p1为p2
:%s/p1/p2/gc        将当前文件中全替换p1为p2,并且每处询问你是否替换
:10,20s/p1/p2/g     将第10到20行中所有p1替换为p2
:%s/1\\2\/3/123/g   将“1\2/3” 替换为 “123”(特殊字符使用反斜杠标注)
:%s/\r//g           删除 DOS 换行符 ^M

##############################################################################
# VISUAL MODE - 由 v, V, CTRL-V 进入的可视模式
##############################################################################

>                   增加缩进
<                   减少缩进
d                   删除高亮选中的文字
c                   改写文字,即删除高亮选中的文字并进入插入模式
y                   拷贝文字
~                   转换大小写
u                   标记区转换为小写
U                   标记区转换为大写
g CTRL-G            显示所选择区域的统计信息
<Esc>               退出可视模式

##############################################################################
# 位置跳转
##############################################################################

CTRL-O              跳转到上一个位置
CTRL-I              跳转到下一个位置
%                   跳转到 {} () [] 的匹配

##############################################################################
# 已打开文件操作
##############################################################################

:ls                 查案缓存列表
:bd                 删除缓存
:b 1                切换到1号缓存
:b abc              切换到文件名为 abc 开头的缓存

##############################################################################
# 窗口操作
##############################################################################

:sp <filename>      上下切分窗口并在新窗口打开文件 filename
:vs <filename>      左右切分窗口并在新窗口打开文件 filename
CTRL-W w            循环切换到下一个窗口
CTRL-W W            循环切换到上一个窗口
CTRL-W h            跳到左边的窗口
CTRL-W j            跳到下边的窗口
CTRL-W k            跳到上边的窗口
CTRL-W l            跳到右边的窗口
CTRL-W x            交换窗口
CTRL-W +            增加当前窗口的行高,前面可以加数字
CTRL-W -            减少当前窗口的行高,前面可以加数字
CTRL-W <            减少当前窗口的列宽,前面可以加数字
CTRL-W >            增加当前窗口的列宽,前面可以加数字


##############################################################################
# 代码折叠
##############################################################################

zo                  打开一层代码

##############################################################################
# 其他命令
##############################################################################

CTRL-E              向上滚屏
CTRL-Y              向下滚屏
CTRL-G              显示正在编辑的文件名,以及大小和位置信息
g CTRL-G            显示文件的:大小,字符数,单词数和行数,可视模式下也可用
zz                  调整光标所在行到屏幕中央
ga                  显示光标下字符的 ascii 码或者 unicode 编码
g8                  显示光标下字符的 utf-8 编码字节序
gi                  回到上次进入插入的地方,并切换到插入模式
ZZ                  保存文件(如果有改动的话),并关闭窗口
:%!xxd              开始二进制编辑
:%!xxd -r           保存二进制编辑
:g/^\s*$/d          删除空行
:g/green/d          删除所有包含 green 的行
:v/green/d          删除所有不包含 green 的行
:g/gladiolli/#      搜索单词打印结果,并在结果前加上行号
:g/ab.*cd.*efg/#    搜索包含 ab,cd 和 efg 的行,打印结果以及行号
/fred\|joe          搜索 fred 或者 joe
/\<\d\d\d\d\>       精确搜索四个数字
/^\n\{3}            搜索连续三个空行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • VIM的初步认识 不是很了解VIM的可以先去看看这篇文章Linux字符界面与VI编辑器你会发现VIM和VI只差了一...
    裂开的汤圆阅读 315评论 0 0
  • VIM常用指令整理 ---2018.9.21更 不得不说 学vim就像用五笔,一年多了,vim用的少,快捷键再怎么...
    _刘小c阅读 320评论 0 3
  • 很多使用vim的初学者往往会去不停查找相应的指令含义,但是从网上的blog发现,大多数vim指令都是按照指令-解释...
    大雄good阅读 257评论 0 1
  • 光标移动 h 光标左移,同 <Left> 键j ...
    guanguans阅读 1,836评论 0 16
  • 我把恐惧藏在鞋里 它却从脚底进入我的身体 我把高兴画在脸上 妆化了,露出狰狞的笑
    石三易阅读 48评论 0 0