Vim 笔记¶
光标移动¶
单词移动¶
w
下一个单词的开头b
本单词或上一个单词的开头e
本单词或下一个单词的结尾ge
上一个单词的结尾
左右移动¶
h
左移一个字符l
右移一个字符0
到本行的第一个字符^
到本行的第一个非空白字符$
到行尾f/F{char}
向右/左移动到本行的 {char} 字符t/T{char}
向右/左移动到本行的 {char} 字符前。光标位于 {char} 的左/右侧;
重复最后的f/t/F/T
命令,
反向重复最后的f/t/F/T
命令
上下移动¶
Enter/j/gj/+
向下移动k/gk/-
向上移动
文本对象移动¶
( / )
向后/前移动一个句子,句子定义为以. ! ?
结尾,后跟行尾或空格/制表符{ / }
向后/前移动一个段落,段落在每个空行后开始[[ / ]]
向后/前移动一个章节,章节在第一列的换页符(^L
)后开始
文本对象选择¶
在 Ctrl-V
可视模式下,可以使用以下命令选择文本对象:
a/iw
选择单词的周围/内部a/is
选择句子的周围/内部a/ip
选择段落的周围/内部a/it
选择标签的周围/内部a/ib or ( / )
选择被( )
括起来的块的周围/内部a/iB or { / }
选择被{ }
括起来的块的周围/内部a/i [/]/'/"/`
选择被对应符号括起来的块的周围/内部
跳转¶
*
跳转到光标下单词的下一个出现位置#
跳转到光标下单词的上一个出现位置
/{string}
跳转到 {string} 的下一个出现位置?{string}
跳转到 {string} 的上一个出现位置n
按相同方向重复最后的搜索N
按相反方向重复最后的搜索
:line
跳转到指定行号gg/G
跳转到第一/最后一行,在第一个非空白字符上{count}%
跳转到文件 {count} 百分比位置,在该行的第一个非空白字符上%
跳转到匹配的括号或引号上``/''
跳转到最后一次跳转前的位置
H
屏幕顶部M
屏幕中间L
屏幕底部
常见操作符¶
- 每个移动命令都可以在操作符命令之后使用,这样操作符就会作用在移动命令覆盖的文本上
- 如果移动命令包含计数,而操作符之前也有计数,两个计数会相乘。例如
2d3w
删除六个单词 - 两个重复的操作符会作用于当前行。例如
g~~/guu/gUU
会改变行中所有字符的大小写,dd
会删除当前行
d
删除c
修改y
复制到寄存器g~
切换大小写gu/U
转换为小写/大写zf
定义折叠p
粘贴x
删除字符,等同于dl
o/O
在下方/上方插入行s/S
替换字符/行,等同于cl/cc
C
修改到行尾u
撤销U
恢复行到初始状态Ctrl + R
重做
其他命令¶
文件¶
:e {相对路径}
打开或创建文件:q
关闭窗口:w
保存:wq
保存并退出:q!
强制退出且不保存:wq!
强制退出并保存
折叠¶
zo
打开折叠zc
关闭折叠za
打开/关闭折叠zR
打开所有折叠zM
关闭所有折叠zf
定义折叠zd
删除折叠
替换¶
:{scope}s/{from}/{to}/{tag}
{scope}
:默认为当前行%
文件中的所有行10,20
从第十行到第二十行1,$
从第一行到最后一行.,$
从当前行到最后一行'a,'b
从标记a的行到标记b的行
{tag}
:默认替换第一个匹配的字符串g
在范围内全局替换c
每次替换时提示确认i/I
不区分/区分大小写
标记¶
m{a-z/A-Z}
在光标位置设置标记a-z
文件内标记A-Z
全局标记`{a-z/A-Z}
跳转到标记位置'{a-z/A-Z}
跳转到标记所在行的第一个非空白字符
多窗口¶
:sp
水平分割窗口:vsp
垂直分割窗口
宏¶
q{a-z}
记录宏到寄存器q
停止记录{count}@{a-z}
重播宏 {count} 次
导航¶
gt/T
向前/后切换标签页{num}gt
切换到第 {num} 个标签页{num}gT
向后切换 {num} 个标签页Ctrl + 0
聚焦到侧边栏,按L
打开选中的文件Ctrl + {num}
聚焦到第 {num} 个组