基本操作
< 如显示不全,请左右滑动 >
快捷键 | 功能 |
---|---|
Esc |
从当前模式转换到“普通模式”。所有的键对应到命令。 |
i |
“插入模式”用于插入文字。回归按键的本职工作。 |
: |
“命令行模式” Vim 希望你输入类似于保存该文档命令的地方。 |
方向键
< 如显示不全,请左右滑动 >
快捷键 | 功能 |
---|---|
h |
光标向左移动一个字符 |
j 或 Ctrl + J
|
光标向下移动一行 |
k 或 Ctrl + 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重复命令
- 重复执行上条命令: .
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.复制、剪切、粘贴
- 普通模式中使用y复制
yy复制游标所在的整行(3yy表示复制3行)
y^ 复制至行首,或y0。不含光标所在处字符。
y$ 复制至行尾。含光标所在处字符。
yw 复制一个单词。
y2w 复制两个单词。
yG 复制至文本末。
y1G 复制至文本开头。
- 普通模式中使用p粘贴
- p(小写)代表粘贴至光标后(下)
- 普通模式中,P(大写)代表粘贴至光标前(上)
- 剪切
dd即剪切===> ddp 交换光标所在行和下一行
三、查找、替换--普通模式下
- 替换、撤销
普通模式下:
r+<待替换字母> :将游标所在字母替换为指定字母
R :连续替换,直到按下Esc
cc :替换整行,即删除游标所在行,并进入插入模式
cw :替换一个单词,即删除一个单词,并进入插入模式
C(大写) :替换游标以后至行末
~ :反转游标所在字母大小写
u{n} :撤销一次或n次操作
U(大写) :撤销当前行的所有修改
Ctrl+r :redo,即撤销undo的操作
- 缩进
' >>、<<
shiftwidth:
- set shiftwidth? 查看当前设置
- set shiftwidth n 设置
调整文本位置:
命令行模式输入:- ce 本行居中
- ri 右
- le 左
- 查找
/ icmp 向下查找icmp
?icmp 向上查找..
n 继续查找,N 查找上一个出现的。
普通模式下输入*寻找游标所在处的单词
普通模式下输入#同上,但 # 是向前(上)找,*则是向后(下)找
普通模式下输入g*同* ,但部分符合该单词即可
普通模式下输入g#同# ,但部分符合该单词即可
四、高级功能
- 多文件编辑
- 进入vim前使用的参数就是多个文件
默认进入1.txt文件的编辑界面
- 进入vim前使用的参数就是多个文件
- 命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件
- 命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件
- 进入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
- 恢复文件
如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入:ewcover 1.txt来恢复
- 可视模式命令
在普通模式下输入v(小写),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v会后就会取消选取。
在普通模式下输入Shift+v(小写),进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次Shift+v就可以取消选取。
在普通模式下输入 Ctrl+v(小写),这是区域选择模式,可以进行矩形区域选择,再按一次Ctrl+v取消选取。
在可视模式下输入d或x删除选取区域内容
在可视模式下输入y复制选取区域内容
批量插入
ctrl+v进入可视块模式,再按G到文件最后一行。然后shift+i进入插入模式,输入’123’,按esc,这样就达到了在每行行首插入’123’的目的。
- 视窗操作
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 + 增加视窗的高度
- 加密文档
vim x file ,然后输入密码,下次打开会需密码 - 执行外部命令
在命令行模式中输入!可以执行外部的shell命令
:!ls 用于显示当前目录的内容
:!rm FILENAME用于删除名为 FILENAME 的文件
:w FILENAME可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件
- 帮助系统
普通模式下按F1打开vim自己预设的帮助文档
命令行模式下输入:h shiftwidth 打开名为shiftwidth的帮助文件
命令行模式下输入:ver 显示版本及参数
- 功能设定
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语言风格缩进