开始
真正使用vim
已经有一年啦,深感这的确是程序开发者的一项很好用的工具,熟练使用可以帮助自己节约大量的时间,不需要在鼠标和键盘之间来回切换,仅仅依靠键盘就能完成一系列工作,如此一来思路不会被打断,能够使自己更加专注在代码编辑上。但是上手这个工具的学习成本确实有点高,即使长时间使用,也总能发现vim
中一些实用的的技巧原来自己没有get到,于是便写下这篇文章,帮助自己、以及喜欢vim
的同学一起学习。
所以本篇文章会从自己的实际使用角度出发,去记录一些实用的技巧,所以本文不包含简单的vim
光标移动、模式转换等基础使用的介绍。本文也会包括一些vscode、输入法相关的快捷键是用技巧,终归一个目的:就是让手尽可能的少离开键盘。
- 环境准备:vscode + vscodevim
常用技巧
对于编辑以下示例代码:
function foo(name, age) {
console.log(name)
}
复制代码
-
如何对参数
(name, age)
快速选中并变更?在参数区域按下
vib
键,可以快速选中,然后按下c
键,删除并进入插入模式。如果需要选中两边的的小括号,那么可以按下vab
键。相关的还有:
viw
快速选中单词,vip
快速选中段落。 -
同理如何选中函数体部分,也就是花括号的区域?
在函数部分按下
viB
键,选中函数体中的内容,如果需要连同选中两边的花括号可以按下vaB
键。 -
光标如何在匹配括号之间跳转?
首先让光标位于其中一个括号上,然后按下
%
键。 -
插入模式下,光标如何左右移动?
ctrl + f
光标向后移动,ctrl + b
光标向前移动,这个功能在插入模式下会经常使用到,同时这个技巧几乎适用于所有的编辑区域,包括命令行。 -
如何快速找到最近编辑的地方,并进入插入模式?
按下
gi
键。 -
在同时编辑两个文档的情况下,光标如何快速移动?
ctrl + o
光标跳转到上一次的位置,ctrl + i
光标跳转到下一些位置。也可以使用ctrl + tab
在多个文档间切换。如果文档未打开过,可以使用cmd + p
查找并打开。 -
在输入中文的情况下,如何上下翻备选词或字?
尽量不使用上下箭头,因为会使得手离开按键区域,可以使用句号下翻,逗号上翻。如果要取消输入可以直接使用
esc
退出。 -
如果再输入过程中,发现当前光标位置太靠近屏幕下方,怎样使当前编辑区域位于屏幕中央?
按下
zz
键,与光标移动有关的还有ctrl + u/b
向上翻半/全屏,ctrl + d/f
向下翻半/全屏。gg
去到文章开头,G
去到文章结尾。 -
如何在一行内快速跳转到某个字符?
f + 字符
向后查找,F + 字符
向前查找。例如想要删除从当前到e之间的字符,那么可以使用dfe
键删除。在单行内移动还有如下方法:
0
移动到这一行开头,$
移动到这一行结尾。 -
经常一个操作就是编辑代码,然后使用命令行运行,所以如何在代码区和命令行区域快速切换?
这个需要自定义vscode快捷键。
在
preferences
下选择keyboard shortcuts
,查询focus terminal
,输入自己喜欢的快捷键,例如我输入的就是cmd + j
。同理:想要聚焦在代码编辑区域,输入focus editor
,编辑Focus First Editor Group
为自己喜欢的快捷键,例如我使用的就是cmd + i
键。这样就可以使用 cmd + i/j 在代码编辑区和命令行之间切换啦。
{ "key": "cmd+j", "command": "workbench.action.terminal.focus" } { "key": "cmd+i", "command": "workbench.action.focusFirstEditorGroup" } 复制代码
-
如何快速关闭窗口?
使用
ctrl + w
键。 -
如何快速删除一行内容并进入编辑模式?
使用大写的
S
。小写的s
是删除当前字符并进入插入模式。类似的还有cw
删除当前单词并进入插入模式。万一删除错了,使用u
回退。
命令行技巧
-
如何快速查找一个命令?
可以使用
ctrl + r
查找历史记录。 -
如何快速上下翻查找命令?
还是不使用上下箭头键,因为会使手脱离字母键盘区域。那么可以使用
ctrl + p/n
上下翻。 -
命令行中光标移动?
ctrl + a
移动到行首,ctrl + e
移动到行尾,ctrl + f
向后移动,ctrl + b
向前移动。 -
命令行中如何快速快速删除?
可以使用
ctrl + u
删除一整行,ctrl + w
删除上一个单词。ctrl + k
删除光标后的所有字符,ctrl + d
删除光标位置的字符。
以上大概就是我高频使用到的命令,如有其他的常用的命令,大家可在评论区补充。
:)