vim commands
命令行是 vscode 插件版本的,和 vim 原生命令或许有出入。
光标移动 (Cursor Motions)
左右移动
N 用来(可选)置于命令之前表示该命令执行的计数。
| [N] | 命令 | 描述 |
|---|---|---|
| N | h | 左移 N 行(亦:CTRL-H、<BACKSPACE>或<Left>键 |
| N | l | 右移 N 行(亦:<Space>或<Right>键 |
| 0 | 至本行首个字符(亦:<Home>键) | |
| ^ | 至本行首非空白字符 | |
| N | $ | 至本行(加上 N-1 个后续行)末个字符(亦:<End>键) |
| gm | 至屏幕行中点 | |
| N | | | 至第 N 列(缺省:1) |
| N | f{char} | 至右边第 N 次出现{char}之处(find) |
| N | F{char} | 至左边第 N 次出现{char}之处(Find) |
| N | t{char} | 至右边第 N 次出现{char}之前(till) |
| N | T{char} | 至左边第 N 次出现{char}之前(Till) |
| N | ; | 重复前次“f”、“F”、“t”或“T”命令 N 次 |
| N | , | 反向重复前次“f”、“F”、“t”或“T”命令 N 次 |
上下移动
| [N] | 命令 | 描述 |
|---|---|---|
| N | k | 上移 N 行(亦:CTRL-P和<Up>键) |
| N | j | 下移 N 行(亦:CTRL-J、CTRL-N、<ENTER>和<DOWN>键 |
| N | - | 上移 N 行,至首个非空白字符处 |
| N | + | 下移 N 行,至首个非空白字符处(亦:CTRL-M和<CR>) |
| N | _ | 下移 N-1 行,至首个非空白字符处 |
| N | G | 至第 N 行(缺省:末行)首个非空白字符处 |
| N | gg | 至第 N 行(缺省:首行)首个非空白字符处 |
| N | % | 至全文件行数百分之 N 处;必须给出 N,否则是%命令 |
| N | gk | 上移 N 屏幕行(回绕行时不同于“k”) |
| N | gj | 下移 N 屏幕行(回绕行时不同于“j”) |
文本对象动作
| [N] | 命令 | 描述 |
|---|---|---|
| N | w | 向前 N 个单词(word) |
| N | W | 向前 N 个空白隔开的字串(WORD) |
| N | e | 向前至第 N 个单词词尾 (end) |
| N | E | 向前至第 N 个空白隔开的字串的词尾 (End) |
| N | b | 向后 N 个单词 |
| N | B | 向后至第 N 个空白隔开的字串的词尾(backward) |
| N | ge | 向后至第 N 个单词词尾 |
| N | gE | 向后至第 N 个空白隔开的字串的词尾 |
| N | ) | 向前 N 个句子 |
| N | ( | 向后 N 个句子 |
| N | } | 向前 N 各段落 |
| N | { | 向后 N 个段落 |
| N | ]] | 向前 N 个小节,置于小节的开始 |
| N | [[ | 向后 N 个小节,置于小节的开始 |
| N | ][ | 向前 N 个小节,置于小节的末尾 |
| N | [] | 向后 N 个小节,置于小节的末尾 |
| N | [( | 向后至第 N 个未闭合的'(' |
| N | [{ | 向后至第 N 个未闭合的'{' |
| N | ]) | 向前至第 N 个未闭合的')' |
| N | ]} | 向前至第 N 个未闭合的'}' |
模式查找
可选数字[offset]表示找到匹配项后光标应移的行数。正数向上,负数向下。
| [N] | 命令 | 描述 |
|---|---|---|
| N | /{pattern}[/[offset]]<CR> | 向前查找第 N 次出现{pattern}的地方 |
| N | ?{pattern}[?[offset]]<CR> | 向后查找第 N 次出现{pattern}的地方 |
| N | n | 重复前次查找 |
| N | N | 相反方向重复前次查找 |
| N | * | 向前查找光标下的标识符 |
| N | # | 向后查找光标下的标识符 |
| N | g* | 同“*”,但也查找部分匹配 |
| N | g# | 同“#”,但也查找部分匹配 |
| gd | 至光标下标识符的局部声明(goto declaration) | |
| gD | 至光标下标识符的全局声明(goto Declaration) |
位置标记和相关动作
| [N] | 命令 | 描述 |
|---|---|---|
| m{a-zA-Z} | 用标记{a-zA-Z}记录当前位置 | |
| `{a-z} | 至当前文件中的标记{a-z}处 | |
| `{A-Z} | 至当前文件中的标记{A-Z}处 | |
| `` | 至前次跳转之前的位置 | |
| `[ | 至前次被操作或放置的文本的开始 | |
| `] | 至前次被操作或放置的文本的末尾 | |
| `. | 至当前文件最后被改动的位置 | |
| :marks | 列出活动的标记 | |
| N | CTRL-O | 跳转到跳转表中第 N 个较早的位置 |
| N | CTRL-I | 跳转到跳转表中第 N 个较晚的位置 |
| :ju[mps] | 列出跳转表 |
其他动作
| [N] | 命令 | 描述 |
|---|---|---|
| % | 找到本行中后一个括号、方括号、注释或"#if"/"#else"/"#endif"并移动至与其匹配的位置 | |
| N | H | 至窗口的第 N 行首个非空白字符处(Home) |
| M | 至窗口的中间行首个非空白字符处(Middle) | |
| N | L | 至窗口的从下方算第 N 行的首个非空白字符处(Last) |
屏幕滚动
| [N] | 命令 | 描述 |
|---|---|---|
| N | CTRL-E | 窗口下滚 N 行(缺省:1)(Extra) |
| N | CTRL-D | 窗口下滚 N 行(缺省:半页)(Downwards) |
| N | CTRL-F | 窗口下滚 N 页 |
| N | CTRL-Y | 窗口上滚 N 行(缺省:1) |
| N | CTRL-U | 窗口上滚 N 行(缺省:半页)(Upwards) |
| N | CTRL-B | 窗口上滚 N 页 (Backwards) |
| z<ENTER> 或 zt | 将当前行置于窗口顶部 (top) | |
| z. 或 zz | 将当前行置于窗口正中 | |
| z- 或 zb | 将当前行置于窗口底部(bottom) |
以下仅当wrap选项关闭时生效(还不懂wrap是个什么东西):
| [N] | 命令 | 描述 |
|---|---|---|
| N | zh | 屏幕右滚 N 个字符 |
| N | zl | 屏幕左滚 N 个字符 |
| N | zH | 屏幕右滚半个屏宽 |
| N | zL | 屏幕左滚半个屏宽 |
插入文本
| [N] | 命令 | 描述 |
|---|---|---|
| N | a | 在光标后添加文本(N 次)(append) |
| N | A | 在行末添加文本(N 次)(Append) |
| N | i | 在光标前添加文本(N 次)(insert) |
| N | I | 在行首添加文本(N 次)(Insert) |
| N | gI | 在第一列中插入文本(N 次) |
| N | o | 在当前行下方打开新行,添加文本(N 次 |
| N | O | 在当前行上方打开新行,添加文本(N 次 |
在可视列块模式下:
| [N] | 命令 | 描述 |
|---|---|---|
| I | 在所有选中的行之前插入相同的文本 | |
| A | 在所有选中的行之后添加相同的文本 |
插入模式键
离开插入模式:
| 命令 | 描述 |
|---|---|
| <ESC> | 结束插入模式,回到普通模式 |
| CTRL-C | 同<ESC>,但不使用缩写(Copilot 说 ESC 有能力触发一些自动命令和映射) |
| CTRL-O | 执行命令 {command}并回到插入模式 |
移动:
| 命令 | 描述 |
|---|---|
| 光标键 | 左/右/上/下移动光标 |
| <END> | 光标直奔行的末字符之后 |
| <HOME> | 光标至本行的首字符之上 |
插入模式特殊键:
| 命令 | 描述 |
|---|---|
| CTRL-E | 插入光标下方的字符 |
| CTRL-Y | 插入光标上方的字符 |
| CTRL-A | 插入前次插入的文本 |
| CTRL-@ | 插入前次插入的文本并结束插入模式 |
| CTRL-R{0-9a-z%#:.-="} | 插入寄存器中的内容 |
| CTRL-N | 插入光标前标识符的后一个匹配(屁用没有) |
| CTRL_P | 插入光标前标识符的前一个匹配(屁用没有) |
| <BS>或 CTRL-H | 删除光标前的一个字符 |
| <Del> | 删除光标下的一个字符 |
| CTRL-W | 删除光标前的一个单词(word) |
| CTRL-U | 删除当前行中所有的输入字符 |
| CTRL-T | 在当前行首插入一个 tab 符号 |
| CTRL-D | 在当前行首插入一个 tab 符号 |
javascript
function test() {
console.log('test')
}可视模式 (Visual Mode)
动作 (Action)
i (inner)
a (around)
t (tag)
w (word)
s (sentence)
p (paragraph)
b (block)
r (range)
命令 作用 示例 i" 选择光标所在 ""内单词" foo"iw 选择光标所在单词,不包括周围空格 fooi( 选择光标所在 ()内单词( foo)a" 选择光标所在 ""单词(包括"")"foo"aw 选择光标所在单词,包括周围空格 a sample texta( 选择光标所在 ()单词(包括())(foo)
js
function test() {
console.log('test')
console.log('test')
}
