本文翻译自:https://devhints.io/vim
文章目录 1、Basic Exiting Exiting insert mode 2、编辑 3、导航 4、操作符 5、文本对象 6、杂项 标签页 折叠 导航 跳跃 计数器 窗口 标签 案例 Marks 杂项 命令行 文本对齐 计算器 退出并出现错误 拼写检查 Also see
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>
进入可视屏蔽模式
在可视模式下
有关您可以执行的其他操作,请参阅操作符。
查找和替换
:%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 删除到单词的开头 2 dd
删除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
Vim cheatsheet (vim.rotrr.com) Vim documentation (vimdoc.sourceforge.net) Interactive Vim tutorial (openvim.com)
2024-06-05(三)