vim 快捷键

Inline Code 进入vim引导教程 shell:vimtutor zh SharpKey 改键 CopLock => Esc

光标移动

基本

旧的光标位置ctrl_o
新的光标位置ctlr_i
上一个编辑位置g;
下一个编辑位置g,
移动到行首0
移动到行尾$

单词间移动

上一个单词词尾ge
下一个单词词首w
下一个词段(下一个空格后的第一个词词首)W
当前(已在词首则为上一个)单词词首b
上一个词段(上一个空格后第一个词词首)B
当前(已在词尾则为下一个)单词词尾e
下一个词段(下一个空格前一个单词词尾)E

姊妹符号间移动

%反复横跳
[{移动到(当前{}块)的开符号{
]{移动到闭符号}
[(移动到(当前()块)的开符号(
[(移动到闭符号)

行内指定字母间移动

f<a>下一个匹配字符
F<a>上一个匹配字符
t
t<a>下一个匹配字符的前一个字符
T<a>上一个匹配字符的前一个字符

代码块间移动

向前移动一个句子
(实际表现一般是标签之间)
(
向后移动一个句子
)
向前移动一个段落(实际表现是标签之间的空行){
向后移动一个段落(实际表现是标签之间的空行)}

行间移动

跳转到整页的第n行nG ngg
跳转到最后一行G

选择

v_标定词 V 整行

标定

点标定

行首^0
行尾$
词首b
词尾e

范围标定

%姊妹符号之间

对象标定

参考删除

删除

"dl"    delete character (alias: "x")           dl
"diw"   delete inner word                       diw
"daw"   delete a word                           daw
"diW"   delete inner WORD (see WORD)            diW
"daW"   delete a WORD (see WORD)                daW
"dgn"   delete the next search pattern match    dgn
dd    delete one line
dis  删除一段句子
das  删除句子和前后隔行
dib  删除(' ')内的内容
dab  删除'()'和里面的内容
dip  删除一个段落
dap  删除一个段落和前后的换行
diB  删除{''}内的内容
daB  删除'{}'和里面的内容

ds{  删除对应'{'括号

插入

I 行首插入 A 行尾插入

修改

c+标定词剪切到
C剪切到行尾
s修改当前光标单字
S修改整行

替换

:{作用范围}s/{目标}/{替换}/{替换标志}

:%s/a/b/optionsa被替换词,b替换词,options替换方式

suround plugin

ys开始表示在两边添加符号,如: ysw)yse( 等,一般左符号表示内部带空格,右符号表示内部不带空格。
ds开始表示删除两边的符号,如:ds]ds{ 等。
cs开始表示替换两边的符号,如: cs{[cs(} 等,注意依旧有左符号和右符号的空格区别。

重复

.编辑类操作重复

排版

`z<cC>`
za打开或关闭折叠
<< >>前后缩进

粘贴

p粘贴到光标前
P粘贴到光标后
"*p首选系统剪切板内容粘贴

查找

正向查找: 命令: /keyword 描述: 在 Normal 模式下,输入 /,然后输入要查找的关键字(单词),按下 Enter。光标会跳转到第一个匹配的位置,按 n 键可以继续查找下一个匹配。 反向查找:

命令: ?keyword 描述: 与正向查找类似,但是使用 ? 开始,查找方向是反向的。按 N 键可以继续查找上一个匹配。 全词匹配查找:

命令: /<keyword> 描述: 使用 < 和 > 将关键字包裹起来,表示全词匹配。例如,/<word> 会匹配单独的 "word",而不是包含在其他单词中的部分。 光标下单词匹配:

命令: * 或 # 描述: 在 Normal 模式下,将光标移动到要查找的单词上,然后按下 * 查找下一个匹配,按 # 查找上一个匹配。 高亮所有匹配:

命令: hlsearch,然后正向或反向查找。 描述: 使用 hlsearch 命令启用搜索高亮。搜索结果将在屏幕上突出显示。

窗口操作

<c-w>w切换窗口
<c-w>{h,j,k,l}向上下左右切换窗口
<c-w>{H,J,K,L}向上下左右移动窗口
`{width}`
<c-w>{height}_调整当前窗口高度比例为 height/100*n(n为垂直窗口个数)

视口操作

翻页

<c-y>上移一行(光标不移动 编辑器窗口移动)
c-e下移一行(光标不移动 编辑器窗口移动)
c-u上翻半页(up)
c-d下翻半页(down)
c-f相对视图页面向前滑动一页(forward)
c-b相对视图页面向后滑动一页(backward)

tabline

标签间切换
:tabnew打开一个新的标签页,并在其中显示当前缓冲区。
:tabnew filename打开file到新标签
gt :tabnext:tabn切换到下一个标签页。
gT :tabprevious:tabp切换到上一个标签页。
gf打开光标所在位置同名文件到新标签
CTRL-T跳转到标签列表的第 N 个较老的标签 (Tag)
:tabfirst切换到第一个标签页。
:tablast切换到最后一个标签页。
:tabm <n>将当前标签页移动到索引为 <n>的位置(从 0 开始计数)。
关闭标签页
:tabclose:tabc关闭当前标签页。
:tabonly关闭所有非当前标签页,保留当前标签页。
:tabcloseall关闭所有标签页,包括当前标签页。
查看标签页列表
:tabs:tabm列出所有当前打开的标签页。
在指定标签页中打开文件
:tabedit <文件路径>:tabe <文件路径>在新标签页中打开指定文件。
:tabfind <文件名>在新标签页中查找指定文件。

buffer

buffer list
index/namego to buffer index/name
index/name^^

插件检查

:checkheath

q @reg开始录制名为reg的宏 按q结束录制
@reg运行一次宏 reg
n @reg运行n次 reg

多行选择和“选后操作”

可视模式(Visual mode)

v V 选择多行后

:normal 操作对选定的多行执行特定的普通模式命令,也就是同时对多行执行“操作”,比如 :normal $x 删除行尾字符

可视块模式(Visual Block mode)

ctrl+v 进入可视块模式,和 vscode 的鼠标中间选择一样