vim
光标
h/j/k/l |
左下上右 |
b/e |
词首词尾 |
^/$ |
行首行尾 |
-/+ |
上一行行首、后一行行首 |
{/} |
段首段尾 |
gg/G |
文首文尾 |
<Cf> |
向下一页(Forward) |
<cb> |
向上一页(Back) |
<cd> |
向下半页 |
<cu> |
向上半页 |
gg |
光标移动到文档开头 |
G |
光标移动到文档末尾 |
数字+方向 |
向某个方向移动指定行 |
参见
字符操作
i/I |
插入、插入到行首 |
a/A |
附加、附加到行尾 |
p/P |
后粘贴、前粘贴 |
d/D |
删除、删除到行尾 |
s/S |
删除并插入、删除到行尾并插入 |
r |
替换 |
f/F |
行内查找、行内前向查找 |
R |
进入 Replace/Insert 模式 1 |
:m +1 |
下移一行 |
:m -1 |
上移一行 |
列编辑
使用列编辑一共有三个步骤:
使用 <C-v> 进入列选择模式
使用 <I> 进入列前端插入模式,或者使用 <A> 进入列后端插入
完成编辑后使用 <ESC> 退出编辑模式
然后所有选择的列都会出现相同的内容
可视模式
上面所述的 列编辑 实际上是可视模式的一种。
v |
字符可视模式 |
|---|---|
V |
行可视模式 |
<C-v> |
块可视模式 |
窗口管理
sp/vs |
分割窗口 |
<C-w>+方向键 |
在分割的窗口间切换 |
<C-w w> |
转到下一个窗口: |
<C-w +/-> |
调整窗口高度 |
<C-w </>> |
调整窗口宽度 |
<C-w => |
将所有窗口设置为相同尺寸 |
:[vertiacl] res |
调整窗口大小: |
close |
关闭当前窗口 |
qall |
退出所有窗口 |
qall! |
退出所有窗口而不保存 |
wqall |
退出所有窗口并保存 |
wall |
保存所有窗口 |
备注
<C-w-w> 可以用来转到悬浮窗口 2
标签页:
tabe+file |
创建标签 |
tabc+n |
关闭标签 |
tabn/tabp |
切换标签 |
代码折叠
za |
切换折叠 |
zc |
折叠 |
zC |
对所在范围内所有嵌套的折叠点进行折叠 |
zo |
展开折叠 |
zO |
对所在范围内所有嵌套的折叠点展开 |
[z |
到当前打开的折叠的开始处 |
]z |
到当前打开的折叠的末尾处 |
zj |
向下移动。到达下一个折叠的开始处。关闭的折叠也被计入 |
zk |
向上移动到前一折叠的结束处。关闭的折叠也被计入 |
此外,还可能需要在配置文件中添加:
' 基于缩进进行代码折叠
set foldmethod=indent
' 启动 Vim 时关闭折叠
set nofoldenable
参见
` vim 标签页与折叠栏 <https://www.zhaixue.cc/vim/vim-tab.html>`_
终端命令
:!+命令
同样的,在执行诸如 cd 的命令的时候可以按 tab 补全
切换工作区
cd |
改变vim的当前工作路径 |
lcd |
改变当前窗口的工作路径 |
pwd |
查看当前的工作路径 |
set autochdir |
自动设当前编辑的文件所在目录为当前工作路径 |
自动对齐
gg=G
键盘
<leader> 默认是 \\
映射时映射 Alt 这种键的时候需要写成 <M-..> 的形式 箭头键是 <Right>, <Left>, <Up>, <Down>
两者组合在一起就是 <M-Up>
内置终端
:term 或者 :term bash/zsh/…
使用 <C-\><C-n> 可以退出终端模式,更多请参阅 :help terminal-emulator
宏
宏算是一个比较高阶的功能了,用法是:
按下 qa 开始录制宏
对行进行操作
按 q 退出宏录制
按 [\d]@a 执行宏
备注
尽管宏的用法比较简单,但是依然有一些需要注意的地方:
在宏录制的最后不要忘记切换到下一行,要不然宏执行的时候都是在一行上进行操作的
当遇到错误的时候,宏会自动停止(例如在文件末尾尝试将光标移动到下一行)
插件
一些比较好的插件:
editorconfig 的 vim 版本 |
|
用来显示工作路径下的路径树 |
|
根据打开的文件自动切换工作路径 |
|
vim-nerdtree-syntax-highlight |
根据 LSP 对代码进行着色 |
vim-airline |
一个底部状态栏 |
对于 nerdtree 而言,需要安装 vim-devicons 和相关字体,推荐安装 FiraCodeNerd
忽略大小写
要进行忽略大小写的搜索,有两种方法:
set ignorecase
/string\c
非贪婪匹配
非贪婪匹配使用 \{-}
二进制模式
使用 nvim -b 可以使用二进制编辑模式,另外,使用 :set display=uhex 可以将一些符号以二进制的形式显示,这在处理 Windows 下的文件时很好用