本文翻译自:https://devhints.io/vim
1、Basic
Vim是一个非常高效的文本编辑器。
有关快捷方式表示法,请参见:help key-notation
。
Exiting
:q |
关闭文件 |
:qa |
关闭所有文件 |
:w |
保存 |
:wq / :x |
保存并关闭文件 |
ZZ |
保存并退出 |
ZQ |
退出而不检查更改 |
Exiting insert mode
Esc / <C-[> |
退出插入模式 |
<C-C> |
退出插入模式,并中止当前命令 |
2、编辑
编辑
a |
追加 |
A |
从行尾追加 |
i |
插入 |
o |
下一行 |
O |
上一行 |
s |
删除字符并插入 |
S |
删除行并插入 |
C |
删除直到行尾并插入 |
r |
替换一个字符 |
R |
进入替换模式 |
u |
撤消更改 |
<C-R> |
重做更改 |
剪切板
x |
删除字符 |
dd |
删除线(剪切) |
yy |
扬线(复制) |
p |
粘贴 |
P |
粘贴前 |
"*p / "+p |
粘贴从系统剪切板 |
"*y / "+y |
粘贴到系统剪切板 |
Visual 模式
v |
进入可视模式 |
V |
进入可视线模式 |
<C-V> |
进入可视屏蔽模式 |
在可视模式下
d / x |
删除选择 |
s |
替换选择 |
y |
扬基选择(复制) |
有关您可以执行的其他操作,请参阅操作符。
查找和替换
:%s/foo/bar/g
: 在整个文档中将foo替换为bar
3、导航
方向
h j k l |
箭头键 |
<C-U> / <C-D> |
半页 上/下 |
<C-B> / <C-F> |
页面 上/下 |
单词
b / w |
上一个/下一个单词 |
ge / e |
上一个/下一个单词结尾 |
线
性格
文件
gg |
第一行 |
G |
最后一行 |
:{number} |
Go to line{number} |
{number}G |
Go to line{number} |
{number}j |
Go down{number} 行 |
{number}k |
Go up{number} 行 |
窗口
zz |
居中此行 |
zt |
顶部此行 |
zb |
底部此行 |
H |
移动到屏幕顶部 |
M |
移动到屏幕中间 |
L |
移动到屏幕底部 |
搜索
n |
下一个匹配搜索模式 |
N |
上一个拟合 |
* |
光标下的下一个整词 |
# |
光标下的上一个整词 |
4、操作符
用法
运算符允许您在一系列文本(由运动定义)中进行操作。这些在正常模式下执行。
操作符列表
d |
删除 |
y |
扬克(复制) |
c |
更改(删除然后插入) |
> |
缩进右 |
< |
缩进左 |
= |
自动缩进 |
g~ |
交换大小写 |
gU |
大写 |
gu |
小写 |
! |
滤波器通过外部程序 |
请参见 :help operator
例子
将运算符与动作结合使用。
d d |
(重复字母)删除当前行 |
d w |
删除到下一个单词 |
d b |
删除到单词的开头 |
2dd |
删除2行 |
d ip |
删除文本对象(段落内) |
(在可视模式下) d |
删除选择 |
请参阅::help motion.txt
5、文本对象
用法
文本对象允许您在文本块(对象)中或周围进行操作(使用运算符)。
v |
i |
p |
运算符 |
[i]nside or [a]round |
文本对象 |
文本对象
p |
段落 |
w |
Word |
s |
句子 |
[ ( { < |
A [], (), 或{}屏蔽 |
' " ` |
A引号字符串 |
b |
A block [( |
B |
A block in [{ |
t |
A XML tag block |
例子
vip |
选择段落 |
vipipipip |
选择更多 |
yip |
Yank内部段落 |
yap |
Yank段落(包括换行符) |
dip |
删除内部段落 |
cip |
更改内部段落 |
有关您可以执行的其他操作,请参阅操作符。
差异
gvimdiff file1 file2 [file3]
: 在HMI中查看文件之间的差异
6、杂项
标签页
:tabedit [file] |
在新标签页中编辑文件 |
:tabfind [file] |
打开文件如果存在于新标签页 |
:tabclose |
关闭当前标签 |
:tabs |
列出所有标签 |
:tabfirst |
转到第一个标签 |
:tablast |
转到最后一个标签 |
:tabn |
转到下一个标签 |
:tabp |
转到上一个标签 |
折叠
zo / zO |
打开 |
zc / zC |
关闭 |
za / zA |
切换 |
zv |
打开折叠 |
zM |
关闭所有 |
zR |
打开所有 |
zm |
折叠更多(foldlevel+=1) |
zr |
折叠更少(foldlevel-=1) |
zx |
更新折叠 |
大写的是递归的(例如,zO
是递归打开的)。
导航
% |
最近/匹配{[()]} |
[( [{ [< |
上一个( 或{ 或< |
]) |
下一个 |
[m |
上一个方法开始 |
[M |
上一个方法结束 |
跳跃
<C-O> |
返回到上一个位置 |
<C-I> |
前进 |
gf |
转到光标中的文件 |
计数器
窗口
z{height}<Cr>
: 将窗格调整为{height}
行高
标签
:tag Classname |
跳转到Classname的第一个定义 |
<C-]> |
跳转到定义 |
g] |
查看所有定义 |
<C-T> |
返回到最后一个标签 |
<C-O> <C-I> |
后退/前进 |
:tselect Classname |
查找Classname的定义 |
:tjump Classname |
查找Classname的定义(自动选择第一个) |
案例
~ |
切换大小写(Case=>cASE) |
gU |
大写 |
gu |
小写 |
gUU |
大写当前行(也gUgU ) |
guu |
小写当前行(也gugu ) |
在可视或普通模式下执行这些操作。
Marks
``^` |
插入模式下光标的最后位置 |
``.` |
当前缓冲区中的最后更改 |
``"` |
最后退出当前缓冲区 |
``0` |
在最后编辑的文件中 |
'' |
返回当前缓冲区中从哪里跳转的行 |
`` |
返回当前缓冲区中从哪里跳转的位置 |
``[` |
到先前更改或拉拽文本的开头 |
``]` |
到先前更改或拉拽文本的结束 |
``<` |
到最后一个视觉选择的开始 |
``>` |
到最后一个视觉选择的结束 |
ma |
将此光标位置标记为a |
``a` |
跳转到光标位置a |
'a |
跳转到位置a |
d'a |
从当前行删除到标记行a |
d`a |
从当前位置删除到标记a |
c'a |
的位置将文本从当前行更改为a |
y`a |
的行从当前位置扬克文本到a |
:marks |
列出所有当前标记 |
:delm a |
删除标记a |
:delm a-d |
删除标记a ,b ,c ,d |
:delm abc |
删除标记a ,b ,c |
杂项
. |
重复最后一个命令 |
]p |
粘贴到当前缩进级别下 |
:set ff=unix |
将Windows行尾转换为Unix行尾 |
命令行
<C-R><C-W> |
将当前字插入到命令行 |
<C-R>" |
从"寄存器 粘贴 |
<C-X><C-F> |
插入模式下路径的自动完成 |
文本对齐
:center [width]
:right [width]
:left
请参阅:help formatting
计算器
<C-R>=128/2
: 显示除法的结果:‘64’
在插入模式下执行此操作。
退出并出现错误
:cq
:cquit
类似于:qa
,但抛出错误。非常适合中止Git命令。
拼写检查
:set spell spelllang=en_us |
打开美国英语拼写检查 |
]s |
移动到光标后的下一个拼写错误的单词 |
[s |
移动到光标前的前一个拼写错误的单词 |
z= |
建议在光标下/后的单词拼写 |
zg |
将单词添加到拼写列表 |
zw |
将单词标记为坏/拼写错误 |
zu /C-X (Insert Mode) |
从spellfile中为光标下的坏单词建议单词 |
请参阅:help spell
Also see
2024-06-05(三)