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删除字符,等同于dlo/O在下方/上方插入行s/S替换字符/行,等同于cl/ccC修改到行尾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} 个组