vim 速查表

基本操作

< 如显示不全,请左右滑动 >

快捷键 功能
Esc 从当前模式转换到“普通模式”。所有的键对应到命令。
i “插入模式”用于插入文字。回归按键的本职工作。
: “命令行模式” Vim 希望你输入类似于保存该文档命令的地方。

方向键

< 如显示不全,请左右滑动 >

快捷键 功能
h 光标向左移动一个字符
jCtrl + J 光标向下移动一行
kCtrl + P 光标向上移动一行
l 光标向右移动一个字符
0 (数字 0)移动光标至本行开头
$ 移动光标至本行末尾
^ 移动光标至本行第一个非空字符处
w 向前移动一个词 (上一个字母和数字组成的词之后)
W 向前移动一个词 (以空格分隔的词)
5w 向前移动五个词
b 向后移动一个词 (下一个字母和数字组成的词之前)
B 向后移动一个词 (以空格分隔的词)
5b 向后移动五个词
G 移动至文件末尾
gg 移动至文件开头

浏览文档

< 如显示不全,请左右滑动 >

快捷键 功能
( 跳转到上一句
) 跳转到下一句
{ 跳转到上一段
} 跳转到下一段
[[ 跳转到上一部分
]] 跳转到下一部分
[] 跳转到上一部分的末尾
][ 跳转到上一部分的开头

插入文本

< 如显示不全,请左右滑动 >

快捷键 功能
a 在光标后插入文本
A 在行末插入文本
i 在光标前插入文本
o (小写字母 o)在光标下方新开一行
O (大写字母 O)在光标上方新开一行

特殊插入

< 如显示不全,请左右滑动 >

快捷键 功能
:r [filename] 在光标下方插入文件 [filename] 的内容
:r ![command] 执行命令 [command] ,并将输出插入至光标下方

删除文本

< 如显示不全,请左右滑动 >

快捷键 功能
x 删除光标处字符
dw 删除一个词
d0 删至行首
d$ 删至行末
d) 删至句末
dgg 删至文件开头
dG 删至文件末尾
dd 删除该行
3dd 删除三行

简单替换文本

< 如显示不全,请左右滑动 >

快捷键 功能
r{text} 将光标处的字符替换成 {text}
R 进入覆写模式,输入的字符将替换原有的字符

复制/粘贴文本

< 如显示不全,请左右滑动 >

快捷键 功能
yy 复制当前行至存储缓冲区
["x]yy 复制当前行至寄存器 x
p 在当前行之后粘贴存储缓冲区中的内容
P 在当前行之前粘贴存储缓冲区中的内容
["x]p 在当前行之后粘贴寄存器 x 中的内容
["x]P 在当前行之前粘贴寄存器 x 中的内容

撤销/重做操作

< 如显示不全,请左右滑动 >

快捷键 功能
u 撤销最后的操作
Ctrl+r 重做最后撤销的操作

搜索和替换

< 如显示不全,请左右滑动 >

快捷键 功能
/search_text 检索文档,在文档后面的部分搜索 search_text
?search_text 检索文档,在文档前面的部分搜索 search_text
n 移动到后一个检索结果
N 移动到前一个检索结果
:%s/original/replacement 检索第一个 “original” 字符串并将其替换成 “replacement”
:%s/original/replacement/g 检索并将所有的 “original” 替换为 “replacement”
:%s/original/replacement/gc 检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换

书签

< 如显示不全,请左右滑动 >

快捷键 功能
m {a-zA-Z} 在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z})
:marks 列出所有书签
{a-zA-Z} 跳转到书签 {a-zA-Z}

选择文本

< 如显示不全,请左右滑动 >

快捷键 功能
v 进入逐字可视模式
V 进入逐行可视模式
Esc 退出可视模式

改动选中文本

< 如显示不全,请左右滑动 >

快捷键 功能
~ 切换大小写
d 删除一个词
c 变更
y 复制
> 右移
< 左移
! 通过外部命令进行过滤

保存并退出

< 如显示不全,请左右滑动 >

快捷键 功能
:q 退出 Vim,如果文件已被修改,将退出失败
:w 保存文件
:w new_name 用 new_name 作为文件名保存文件
:wq 保存文件并退出 Vim
:q! 退出 Vim,不保存文件改动
ZZ 退出 Vim,如果文件被改动过,保存改动内容
ZQ 与 :q! 相同,退出 Vim,不保存文件改动

vim分屏

  • 以分屏的方式的打开多文件:vim -O main.cpp my-oj-toolkit.h
  • 打开/关闭:在进入Vim后,可以使用这些命令来打开/关闭窗口:
:sp[lit] {file}     水平分屏
:new {file}         水平分屏   
:sv[iew] {file}     水平分屏,以只读方式打开
:vs[plit] {file}    垂直分屏
:clo[se]            关闭当前窗口
  • 切换窗口
    切换窗口的快捷键就是Ctrl+w + hjkl:
Ctrl+w h        切换到左边窗口
Ctrl+w j        切换到下边窗口
Ctrl+w k        切换到上边窗口
Ctrl+w l        切换到右边窗口
Ctrl+w w        遍历切换窗口
  • 交换上下左右两个窗口的位置
ctrl_w+x
  • 移动窗口
    分屏后还可以把当前窗口向任何方向移动,只需要将上述快捷键中的hjkl大写:
Ctrl+w H        向左移动当前窗口
Ctrl+w J        向下移动当前窗口
Ctrl+w K        向上移动当前窗口
Ctrl+w L        向右移动当前窗口
  • 调整大小
    调整窗口大小的快捷键仍然有Ctrl+W前缀:
Ctrl+w +        增加窗口高度
Ctrl+w -        减小窗口高度
Ctrl+w =        统一窗口高度
ps: 未成功,可用[vertical] res [N] 来设置宽度。若不加vertical 则设置高度
参考:https://blog.csdn.net/Devil_2009/article/details/7006113

窗口本身的位值的移动:
ctrl_w + r: 窗口本身, 不是鼠标指针顺时针 (向下, 向右 移动), R : 则是逆时针反方向(向上, 向左)移动.
ctrl_w+x: 左右上下对应位置的窗口 对调. 要注意窗口必须是 对应的, 如果不对应将无法对换, 比如左边一个大窗口, 右边有两个小的 子窗口, 则左右不能互换.

窗口本身 的位置移动, 而且大小也发生"最大化"变化
Ctrl_w+ HJKL( 注意是大写的字母 H, J, K, L , 表示要按shift才能实现的)... 要注意, 可以通过 windows 窗口 "贴边" 最大化来理解, H和 L 就是 向左或向右 最大化贴边 显示; 而 JK 则是 向上 或 向下 贴边 最大化显示. 最大化后 就不能 再次操作复原窗口了, 其实也没有必要

另:vim分屏操作,参考http://harttle.land/2015/11/14/vim-window.html http://www.cnblogs.com/barrychiao/p/3446865.html

=======================================

一、基本操作

1.游标移动

按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。

按键 说明
h 左
l 右(小写L)
j 下
k 上
w 移动到下一个单词
b 移动到上一个单词

2.插入模式

在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入

命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符

3.退出vim

从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
以下为其它几种退出方式:

命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出

普通模式下输入Shift+zz即可保存退出vim

4.删除文本

进入普通模式,使用下列命令可以进行文本快速删除:

命令 说明
x 删除游标所在的字符
X 删除游标所在前一个字符
Delete 同x
dd 删除整行
dw 删除一个单词(不适用中文)
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删至文档首部
除此之外,你还可以在命令之前加上数字,表示一次删除多行,如:

2dd表示一次删除2行

二、文档编辑

5.vim重复命令
  1. 重复执行上条命令: .
    2.连续执行命令n次:
    n<command>,如: 3dd,连续删3行,d3w,连续删3个单词
6.快速跳转

1.行间

  • nG : 游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
  • gg :游标移动到到第一行
  • G 到最后一行

2. 行内跳转

  • w 到下一个单词的开头
  • e 到下一个单词的结尾
  • b 到前一个单词的开头
  • ge 到前一个单词的结尾
  • 0或^ 到行头
  • $ 到行尾
  • f<字母> 向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
  • F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
  • t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)
  • T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)
7.复制、剪切、粘贴
  1. 普通模式中使用y复制

yy复制游标所在的整行(3yy表示复制3行)
y^ 复制至行首,或y0。不含光标所在处字符。
y$ 复制至行尾。含光标所在处字符。
yw 复制一个单词。
y2w 复制两个单词。
yG 复制至文本末。
y1G 复制至文本开头。

  1. 普通模式中使用p粘贴
  • p(小写)代表粘贴至光标后(下)
  • 普通模式中,P(大写)代表粘贴至光标前(上)
  1. 剪切
    dd即剪切===> ddp 交换光标所在行和下一行

三、查找、替换--普通模式下

  1. 替换、撤销
    普通模式下:

r+<待替换字母> :将游标所在字母替换为指定字母
R :连续替换,直到按下Esc

cc :替换整行,即删除游标所在行,并进入插入模式
cw :替换一个单词,即删除一个单词,并进入插入模式
C(大写) :替换游标以后至行末
~ :反转游标所在字母大小写
u{n} :撤销一次或n次操作
U(大写) :撤销当前行的所有修改
Ctrl+r :redo,即撤销undo的操作

  1. 缩进
    ' >>、<<
    shiftwidth:
  • set shiftwidth? 查看当前设置
  • set shiftwidth n 设置
    调整文本位置:
    命令行模式输入:
    • ce 本行居中
    • ri 右
    • le 左
  1. 查找
    / icmp 向下查找icmp
    ?icmp 向上查找..
    n 继续查找,N 查找上一个出现的。

普通模式下输入*寻找游标所在处的单词
普通模式下输入#同上,但 # 是向前(上)找,*则是向后(下)找
普通模式下输入g*同* ,但部分符合该单词即可
普通模式下输入g#同# ,但部分符合该单词即可

四、高级功能

  1. 多文件编辑
    1. 进入vim前使用的参数就是多个文件
      默认进入1.txt文件的编辑界面
  • 命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件
  • 命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件
  1. 进入vim后打开新文件

命令行模式下输入:e 3.txt 打开新文件3.txt
命令行模式下输入:e# 回到前一个文件
命令行模式下输入:ls可以列出以前编辑过的文档
命令行模式下输入:b 2.txt(或者编号)可以直接进入文件2.txt编辑
命令行模式下输入:bd 2.txt(或编号)可以删除以前编辑过的列表中的文件项目
命令行模式下输入:e! 4.txt,新打开文件4.txt,放弃正在编辑的文件
命令行模式下输入:f 显示正在编辑的文件名
命令行模式下输入:f new.txt,改变正在编辑的文件名字为new.txt

  1. 恢复文件

如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入:ewcover 1.txt来恢复

  1. 可视模式命令

在普通模式下输入v(小写),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v会后就会取消选取。

在普通模式下输入Shift+v(小写),进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次Shift+v就可以取消选取。

在普通模式下输入 Ctrl+v(小写),这是区域选择模式,可以进行矩形区域选择,再按一次Ctrl+v取消选取。

在可视模式下输入d或x删除选取区域内容
在可视模式下输入y复制选取区域内容

批量插入
ctrl+v进入可视块模式,再按G到文件最后一行。然后shift+i进入插入模式,输入’123’,按esc,这样就达到了在每行行首插入’123’的目的。

  1. 视窗操作

vim可以在一个界面里打开多个窗口进行编辑,这些编辑窗口称为vim的视窗。
命令行模式下输入:new 打开一个新的vim视窗,并进入视窗编辑一个新文件(普通模式下输入Ctrl+w也可以,但是Ctrl+w在chrome下会与chrome关闭标签页的快捷键冲突,所以使用该快捷键你可以在IE或其它浏览器进行练习)

命令行模式下输入:sp 1.txt 打开新的水平分屏视窗来编辑1.txt

命令行模式下输入:vsp 2.txt 打开新的垂直分屏视窗来编辑2.txt
普通模式下Ctrl-w s 将当前窗口分割成两个水平的窗口
普通模式下Ctrl-w v 将当前窗口分割成两个垂直的窗口
普通模式下Ctrl-w q 即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
普通模式下Ctrl-w o 打开一个视窗并且隐藏之前的所有视窗
普通模式下Ctrl-w j 移至下面视窗
普通模式下Ctrl-w k 移至上面视窗
普通模式下Ctrl-w h 移至左边视窗
普通模式下Ctrl-w l 移至右边视窗
普通模式下Ctrl-w J 将当前视窗移至下面
普通模式下Ctrl-w K 将当前视窗移至上面
普通模式下Ctrl-w H 将当前视窗移至左边
普通模式下Ctrl-w L 将当前视窗移至右边
普通模式下Ctrl-w - 减小视窗的高度
普通模式下Ctrl-w + 增加视窗的高度

  1. 加密文档
    vim x file ,然后输入密码,下次打开会需密码
  2. 执行外部命令
    在命令行模式中输入!可以执行外部的shell命令

:!ls 用于显示当前目录的内容
:!rm FILENAME用于删除名为 FILENAME 的文件
:w FILENAME可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件

  1. 帮助系统

普通模式下按F1打开vim自己预设的帮助文档
命令行模式下输入:h shiftwidth 打开名为shiftwidth的帮助文件
命令行模式下输入:ver 显示版本及参数

  1. 功能设定
    set nu(显示行数),设定值退出vim后不会保存。要永久保存配置需要修改vim配置文件。
  • 获取目前的设定

命令行模式下输入:set或者:se显示所有修改过的配置
命令行模式下输入:set all 显示所有的设定值
命令行模式下输入:set option? 显示option的设定值
命令行模式下输入:set nooption 取消当期设定值

  • set功能的说明

命令行模式下输入:set autoindent(ai) 设置自动缩进
命令行模式下输入:set autowrite(aw) 设置自动存档,默认未打开
命令行模式下输入:set background=dark或light,设置背景风格
命令行模式下输入:set backup(bk) 设置自动备份,默认未打开
命令行模式下输入: set cindent(cin) 设置C语言风格缩进

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

推荐阅读更多精彩内容