Vim快捷键
这篇不是教程,而是自己写的笔记。
虽然网上有很多讲解vim快捷键的教程,但我还是想自己写一篇作为笔记,这里没有把所有的快捷键都列出来,也没有对快捷键进行分类,因为快捷键太多了,我一开始只是记了几个常用的,后来慢慢使用vim 就越积累越多,边用边学边记。而不是先把所有的快捷键都记下来。
以后用的熟练了,再总结吧。
比较完整规范的vim快捷键教程可以参考
Vim 的各种模式
Ctrl+[
Ctrl+c
等价与Esc
退出编辑模式进入普通模式(命令模式)
Ctrl+o
暂时退出编辑模式,执行一次普通模式后返回编辑模式
插入模式:i
在光标前面进行编辑
编辑模式:a
在光标后面进行编辑
可视模式:v
光标经过的地方将会被选中,可以进行x(剪切)p(粘贴)操作
也可以在 vimrc 文件中自定义键盘映射
inoremap jk <esc>
这样连续按j
k
就等价于按Esc
这个按键了
移动光标
h
、j
、k
、l
分别控制光标左
、下
、上
、右
移动
可以配合数字使用,比如:
20j 就是向下移动20行,
5h 就是向左移动5个字符
<space>
光标向右移动一个字符
n<space>
光标向右移动n个字符
<Enter>
光标移动到下行行首
n<Enter>
光标向下移动n行行首
nG
移动光标至文章的第n行行首
或者,冒号+行号+回车,比如跳到15行就是::
15
<Enter>
0
光标跳到行首(可能是空字符)
^
光标跳到行首
$
光标跳到行尾
n$
光标跳到下面n行的行尾
gg
移动文件头第一个字符上(可能是空字符)
G
移动到文件尾最后一个字符(可能是空字符)
Ctrl+g
列出光标所在行的行号
w
光标跳到下一个单词或标点符号开头
e
光标跳到下一个单词或标点符号尾部
ge
光标跳到上一个单词或标点符号尾部
b
移动到上一个单词或标点符号的开头
2b 向后移动2个单词
B
移动到上一个单词的开头,忽略标点符号
H
光标移动到这个屏幕上方那一行的第一个字符
M
光标移动到这个屏幕中间那一行的第一个字符
L
光标移动到这个屏幕下方那一行的第一个字符
zz
让光标所在的行居屏幕中央
zt
让光标所在的行居屏幕最上一行 t=top
zb
让光标所在的行居屏幕最下一行 b=bottom
特殊的移动
)
移至下一个句子(sentence)首。
(
移至上一个句子(sentence)首。
}
移至下一个段落(paragraph)首。
{
移至上一个段落(paragraph)首。
sentence 是以.
!
?
为区格。
paragraph 是以空白行为区格。
%
这是匹配{},[],() 用的,例如光标现在在{
上
只要按%
,光标就会跳到相匹配的}
上。
移动行
: 起始行,结束行 move 目标行
例如,把第3行移动到第7行的位置
:3 move 7
把第5行到第7行移动到第12行的位置
:5,7 move 12
或者 dd 然后在合适的地方 p 或 P
最好还是做个键盘映射吧
nnoremap <C-S-Up> dd<Up>P
nnoremap <C-S-Down> ddp
这样就可以像SublimeText 里一样使用Ctrl + Shift + 上下键 来移动光标所在的行了
翻页
整页翻页
ctrl-f
ctrl-b
f = forword,b = backward
翻半页
ctrl-d
ctlr-u
d = down,u = up
滚一行
ctrl-e
ctrl-y
删除
x
向后删除一个字符 (相当于del
键)
nx
向后删除n个字符
X
向前删除一个字符(相当于backspace
键)
nX
向前删除n个字符
d0
删除光标所在处,到该行的最前一个字符
d$
删除光标所在处,到该行的最后一个字符
D
删除当前字符至行尾。D=d$
删除整行
dd
删除光标所在行
ndd
删除光标所在的向下n行
dgg
删除当前行之前所有行(包括当前行)
dnG
删除光标所在行到第n行的所有数据(包括当前行)
dG
删除光标所在到最后一行的所有数据(包括当前行)
:1,$d
删除所有行
:8,$d
删除第8行及以后所有的行
:2,10d
删除2-10行
插入行
o
在目前光标所在的下一行处插入新的一行
O
在目前光标所在处的上一行插入新的一行
合并行
J
可用作删除两行之间的空行,实际上是合并两行。
:3,6j
将3-6行合并成一行
ggvGJ
将所有行合并成一行
gg 用于跳到行首,v 转换成 visual 模式,G 跳到最后一行,J 合并行
复制
yy
复制光标所在的那一行
nyy
复制光标所在的向下n列
ynG
复制光标所在行到第n行的所有数据
yG
复制光标所在行到最后一行的所有数据
y0
复制光标所在的那个字符到该行行首的所有数据
y$
复制光标所在的那个字符到该行行尾的所有数据
p
将已复制或用dd删除的数据粘贴在光标的下一行
P
粘贴在光标的上一行
np
这里n代表一个数字,将剪切板上的内容复制n遍
撤销和重做
u
撤销前一个操作
.
重复前一个操作
Ctrl+r
重做上一个操作(恢复使用u撤销的内容)
替换和查找
/word
向光标向下寻找一个名称为word的字符串
?word
向光标向上寻找一个名称为word的字符串
:n1,n2s/word1/word2/g
n1与n2为数字,在第n1与n2行之间查找word1 这个字符串,并将该字符串替换为word2
:1,$s/word1/word2/g
从第一行到最后一行查找word1字符串,并将该字符串替换为word2
:1,$s/word1/word2/gc
从第一行到最后一行查找word1字符串,并将该字符串替换为word2 ,且在替换前提示用户确认是否进行替换
保存和退出
:w
保存编辑的内容
:w!
强制写入该文件,但跟对该文件的权限有关
:q
离开
:q!
不保存修改强制离开
:wq
保存后离开
:x
保存后离开
ZZ
若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开
新建文件和改名
:w fileName
将编辑的数据保存成另一个文件(类似另存)并命名为fileName
:f newFileName
修改当前文件名称为newFileName
:new 文件名.后缀
新建文件,新建后,记得使用:w
保存,否则直接关闭不会产生文件
文件之间切换
Ctrl+ww
也可以用:ls
查看已经打开的文件列表和编号
然后使用:e 编号
切换到需要编辑的文件
文件操作
:E
查看目录
然后按j
,k
上下移动,按Enter
进入到目录中
–
到上级目录
D
删除文件
R
改文件名
s
对文件排序
x
执行文件
:cd 目录路径
修改当前操作目录
:pwd
查看当前路径位置
显示文件目录
:He
在下边分屏浏览目录
:He!
在上边
:Ve
在左边分屏浏览目录
:Ve!
在右边
Ctrl+w+c
关闭当前窗口(关闭分屏)
Ctrl+w+q
关闭当前窗口,若这是最后一个窗口则退出Vim
大小写转换
vim中大小写转化的命令主要是围绕着“gu”和“gU”两个命令展开的。
语法格式为:[开始位置] gu/Gu [结束位置]
其中:
gu
把选定范围全部小写
gU
把选定范围全部大写
1、整篇文章大小写转换
ggguG
整篇文章转换为小写( 或 1GguG
)
gggUG
整篇文章转换为大写(或 1GgUG
)
解释一下:ggguG分作三段gg gu G
gg=文件头
gu=把选定范围全部小写
gU=把选定范围全部大写
G=文件尾
1G=文件第一行(nG为文件第n行)
2、转换几行的大小写
g~~
切换光标所在行字母的大小写
gUU
光标所在的行全部变成大写
guU
光标所在的行全部变成小写
ngUU
从光标所在行往下n行都变成大写
nguU
从光标所在行往下n行都变成小写
ngUG
从第n行到光标所在的行都变为大写
nguG
从第n行到光标所在的行都变为小写
gU0
从光标所在位置到行首都变为大写
gU$
从光标所在位置到行尾都变为大写
(若要变成小写将其中的gU
改为gu
即可)
gUG
从光标所在位置到文章最后一个字符,都变为大写
gU1G
从光标所在位置到文章第一个字符,都变为大写
3、只转化某几个单词的大小写
~
切换光标所在的字母大小写
n~
将光标位置开始的n个字母改变大小写(此处n为一个数字)
gUw
或 gUw
将光标所在单词的后面几个字母改成大写
guw
或 gue
将光标下的单词的后面几个字母改成小写
例如:Example hello world
当光标在字母“a”位置时,转换的是“ample”这个几个字母
若转换光标后面5个单词的大小写,命令如下:
转为小写:gu5w 或 gu5e
转为大写:gU5w 或 gU5e
查看编码
ga
查看光标处字符的ascii码
g8
查看光标处字符的utf-8编码
Vim的分屏功能
多行编辑
可以考虑用列编辑模式.
Ctrl-v 进入列编辑模式 (win下Gvim使用Ctrl-Q)
(j or k 选择要编辑的范围)
I or A 进入编辑模式,输入要编辑的内容
ESC 结束