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

上移一行

1

Vim入门教程之替换模式、虚拟替换模式和r命令详解

列编辑

使用列编辑一共有三个步骤:

  1. 使用 <C-v> 进入列选择模式

  2. 使用 <I> 进入列前端插入模式,或者使用 <A> 进入列后端插入

  3. 完成编辑后使用 <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

切换标签

2

Q: How do I scroll a float window?

代码折叠

za

切换折叠

zc

折叠

zC

对所在范围内所有嵌套的折叠点进行折叠

zo

展开折叠

zO

对所在范围内所有嵌套的折叠点展开

[z

到当前打开的折叠的开始处

]z

到当前打开的折叠的末尾处

zj

向下移动。到达下一个折叠的开始处。关闭的折叠也被计入

zk

向上移动到前一折叠的结束处。关闭的折叠也被计入

此外,还可能需要在配置文件中添加:

' 基于缩进进行代码折叠
set foldmethod=indent
' 启动 Vim 时关闭折叠
set nofoldenable

终端命令

:!+命令

同样的,在执行诸如 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

宏算是一个比较高阶的功能了,用法是:

  1. 按下 qa 开始录制宏

  2. 对行进行操作

  3. q 退出宏录制

  4. [\d]@a 执行宏

备注

尽管宏的用法比较简单,但是依然有一些需要注意的地方:

  • 在宏录制的最后不要忘记切换到下一行,要不然宏执行的时候都是在一行上进行操作的

  • 当遇到错误的时候,宏会自动停止(例如在文件末尾尝试将光标移动到下一行)

插件

一些比较好的插件:

editorconfig-vim

editorconfig 的 vim 版本

nerdtree

用来显示工作路径下的路径树

vim-rooter

根据打开的文件自动切换工作路径

vim-nerdtree-syntax-highlight

根据 LSP 对代码进行着色

vim-airline

一个底部状态栏

对于 nerdtree 而言,需要安装 vim-devicons 和相关字体,推荐安装 FiraCodeNerd

忽略大小写

要进行忽略大小写的搜索,有两种方法:

  1. set ignorecase

  2. /string\c

非贪婪匹配

非贪婪匹配使用 \{-}

二进制模式

使用 nvim -b 可以使用二进制编辑模式,另外,使用 :set display=uhex 可以将一些符号以二进制的形式显示,这在处理 Windows 下的文件时很好用