Vim快捷键

这篇不是教程,而是自己写的笔记。

虽然网上有很多讲解vim快捷键的教程,但我还是想自己写一篇作为笔记,这里没有把所有的快捷键都列出来,也没有对快捷键进行分类,因为快捷键太多了,我一开始只是记了几个常用的,后来慢慢使用vim 就越积累越多,边用边学边记。而不是先把所有的快捷键都记下来。
以后用的熟练了,再总结吧。

比较完整规范的vim快捷键教程可以参考

Vim 的各种模式

Ctrl+[
Ctrl+c
等价与Esc 退出编辑模式进入普通模式(命令模式)

Ctrl+o暂时退出编辑模式,执行一次普通模式后返回编辑模式

插入模式:i在光标前面进行编辑
编辑模式:a在光标后面进行编辑
可视模式:v光标经过的地方将会被选中,可以进行x(剪切)p(粘贴)操作

也可以在 vimrc 文件中自定义键盘映射
inoremap jk <esc>
这样连续按j k就等价于按Esc这个按键了

移动光标

hjkl分别控制光标移动
可以配合数字使用,比如:
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/gn1与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为一个数字)

gUwgUw 将光标所在单词的后面几个字母改成大写
guwgue 将光标下的单词的后面几个字母改成小写
例如: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 结束

posted @ 2021-03-12 16:53  你是真的菜啊  阅读(269)  评论(0编辑  收藏  举报