前言

不敢说单纯使用键盘码代码的效率会比键盘鼠标结合高多少倍,但是这个过程绝对让你感觉倍爽。虽然过程很累,需要记住那么多组合按键,但是一旦熟练之后你一定会感谢现在努力的自己。

本篇文章以Vscode + Vim + iTerm的码代码的方式来总结,其他编辑器的可以自行搜索。

1、Vim的使用

既然说是纯键盘了,那么你就需要使用按键去替换鼠标的移动和各种跳转。

1.1、移动快捷键

下面介绍的是一些基本按键:

  1. 上下左右移动:kjhl
  2. 会了上下左右的移动,我们想快速移动呢?
    1. w快速移动到光标所在单词的下一个单词词首(W也是快速单词跳转,不过是以空格为分隔符)
    2. e快速移动到光标所在单词的词尾或下一个单词词尾(E也是类同于W)
    3. b快速移动到光标所在单词的词首或上一个单词的词首(B也是类同于W)
    4. $ 快速移动到行尾
    5. 0快速移动到行首(含空格)
    6. ^快速移动到行首非空格的字符
    7. f+任意字符快速跳到所在行指定的任意字符(向前搜索)
    8. t+任意字符快速跳到所在行指定任意字符的前一个字符(向前搜索)
    9. F+任意字符快速跳到所在行指定的任意字符(向后搜索)
    10. T+任意字符快速跳到所在行指定任意字符的前一个字符(向后搜索)
    11. Space逐个字母移动
    12. Shift+*可以快速向下查找光标聚焦的单词
    13. Shift+#可以快速向上查找光标聚焦的单词
  3. 会了行上的快速移动,现在想要文件内部的快速移动呢?
    1. Ctrl+f快速翻到下一页(f表示的单词应该是forward)
    2. Ctrl+b快速翻到上一页(b表示的单词应该是back)
    3. Ctrl+d快速向下翻动半页
    4. Ctrl+u快速向上翻动半页
    5. G快速到达文章末尾
    6. gg快速到达文章开头
    7. H快速到屏幕的首行(等价于单词Head)
    8. M快速到屏幕的中间行(等价于单词Middle)
    9. L快速到屏幕的最后一行(等价于单词Low)
    10. Enter光标向下移动
  4. 会了文件内部的快速移动,项目内代码的移动呢?
    1. Ctrl+]快速跳转到定义处
    2. Ctrl+o回到之前跳转的地方
  5. 如果我想阅读代码,有更好的方式吗?
    1. Ctrl+e可以逐行下滚
    2. Ctrl+y可以逐行上滚
    3. zt可以将光标所在行直接置为首行(t应该为top)
    4. zz可以将光标所在行直接置为屏幕中间行
    5. zb可以将光标所在行直接置为屏幕末尾行(b应该为bottom)
  6. 如果我想找某个单词呢? 在Normal模式下以/开头,输入你想查找的单词,然后回车,vim就会帮你定位到匹配中的单词,之后nN便是查找下一个查找上一个的意思。

1.2、在Normal模式下快速编辑

  1. x/X可以向前或者向后删除单词
  2. dd剪切当前行
  3. dw从光标处剪切到下一个单词词首之前(包含空格),这种组合键其实是将各自按键的结果组合起来,所以很好记
  4. de从光标处剪切到下一个单词词首之前(不包含空格)
  5. 以此类推,d剪切键还可以和0lGBHML等按键合作,不再赘述
  6. yy复制当前行
  7. yd也是一样,可以和各种按键合作,比如想复制光标出后4个单词,可以y4l就行了。
  8. p在光标所在行的下一行粘贴剪切板的东西,P反之在上一行粘贴。
  9. J将光标所在行与下一行的数据结合成同一行
  10. Ctrl+r恢复上一步被撤销的操作
  11. .重复最近一次所做的编辑操作
  12. r替换光标所在字符
  13. R替换从光标处开始多个字符
  14. xp快速交换单词

1.3、编辑模式

  1. i在光标所在位置进入编辑模式
  2. a在光标所在位置的后一个字符进入编辑模式
  3. o在光标所在行的下一行进入编辑模式
  4. O在光标所在行的上一行进入编辑模式
  5. A在光标所在行的结尾处进入编辑模式
  6. I在光标所在行的行首处进入编辑模式
  7. c剪切光标所在行之后进入编辑模式,光标仍留在当前行
  8. s剪切光标聚焦的单词并进入编辑模式
  9. ~将光标所在位置的字符进行变更大小写
  10. gu将光标所在位置的字符变成小写
  11. Gu将光标所在位置的字符变成大写

1.4 Virtual模式

  1. v命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
  2. V命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
  3. Ctrl-V进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。
  4. vis选中一个句子
  5. vip选中一个段落

...更多搭配可以自由随心组合^_^

1.5、文件的保存

在Normal模式下,文件保存的操作如下:

  1. :w:保存编辑后的文件内容,但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。
  2. :w!:强制写文件,即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件,例如,原有的文件为只读文件,则可使用这个命令强制写入。但是,这种命令用法仅当用户是文件的属主时才适用,而超级用户则不受此限制。
  3. :wq:保存文件内容后退出vim编辑器。
  4. :wq!:强制保存文件内容后退出vim编辑器
  5. ZZ:使用ZZ命令时,如果文件已经做过编辑处理,则把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。否则只是退出vim而已。注意,ZZ命令前面无需加冒号“:”,也无需按Enter键。
  6. :q:在未做任何编辑处理而准备退出vim时,可以使用此命令
  7. :q!:强制退出vim编辑器,放弃编辑处理的结

1.6、高级操作

1. 快速选中光标所在单词后复制(剪切)

viwy => 进入虚拟行模式后选取单词接着复制操作

*在虚拟行模式下,`a`和`i`不再是之前我们认为的append和insert。我们先认识一个概念:`Text-Object`,它可以指一个单词,一整句文本,抑或一对括号内的文本,甚至是html或xml标签内的文本。`a`会选择一个对象(object)包括空格在内,而`i`只会选择对象的内部,不包含空格。*

2. 快速替换多个相同的单词

除了使用%s之外,还有另外一种快速替换的方式: 先在Normal Mode下搜索你想替换的单词:/+你想替换的单词,之后回车光标聚焦在你的单词之下,然后cgn,就称为Insert Mode,并且光标聚焦的选中单词被删除,你就可以编辑这个单词为新单词,之后Esc键返回Normal Mode,然后使用.就可以将之前搜索选中的所有单词一个个替换掉。(超级好用的一个高级操作)

  1. 因为有之前对i的介绍,我们可以将i组合出一些比较牛逼的操作:

    1. ci('/"/(/[/{/<): ci按键和各种符号组合可以快速剪切符号内部的内容并进入编辑模式
    2. di('/"/(/[/{/<): di的操作也是类似,只是不会进入编辑模式
    3. yi('/"/(/[/{/<): yi的操作则是直接复制
    4. vi('/"/(/[/{/<): vi的操作是选中,后续操作看自己输入的命令

      Note 大家从中可以看到这种规律:ci/di/yi/vi开头的按键可以和各种位置操作相关的按键(比如w/e/b等)组合,达到快速编辑的目的。所以Vim并不是全无规律可言

4. 快速注释代码行的操作

光标跳到你想注释的代码行,然后Ctrl+V进入虚拟块选择模式,接着可以选中你想注释的那些行的代码(可以使用j或者别的按键),接着按I(记得是大写的I)进入列插入状态,输入//后按Esc,就可看到你选中的那些行都被注释掉,其实这个功能等同于VSCODE的多光标编辑模式,超级好用的一个操作

由这个操作还可以引申到在代码行的任意位置进行多光标操作,比较常用的可能就是行尾操作:`Ctrl+V`=>`j`=>`$`=>`A`=>`Esc`即

5. 将文本拷贝到命名缓冲区,后面可以直接通过该缓冲区使用。

有效的缓冲区名字为从a到z的26个字母。操作命令如下:

1. `"ayy`:拷贝当前行到缓冲区a
2. `"a5yy`:拷贝5行到缓冲区a
3. `"ap`:粘贴缓冲区a的内容

**Tips**:*你可以使用`:reg`查看当前vim使用的寄存器存储的内容*

那如果我想拷贝到全局缓冲区呢?

vim提供了一个叫做`+`的寄存器存放系统剪切板,所以操作命令是:`v`进入可视化模式,选中你想复制的文本,然后按`"+y`即可复制文本到系统剪切板上,在系统别的地方就可以使用你的文本!

6. 粘贴删除的文本

如果误删除了一些文本,可以恢复最近9个操作过的文本。因为他们都保存在编号的缓冲区中,最后一次删除的内容保存在缓冲区1,倒数第二次的则保存在缓冲区2……要恢复删除操作,先输入`"`,接着指定缓冲区编号,在使用放置命令。比如:
`“2p`是粘贴最近倒数第二次的删除文本

7. 录制动作

如果某个操作是可重复的,可以使用vim的高级特性:录制。在Normal模式下使用q + a~z(a~z选择一个字母来存储你录制的动作,类似于上面的寄存器),之后就可以开始你的可重复的动作,操作完所有动作之后敲一下q,即可停止录制,然后使用@+你之前保存的寄存器字母即可不断重复之前的动作集合了。

2、Vscode的常用快捷键

下面所讲的快捷键均是以Mac的键盘为准

2.1、主命令框

F1Command+Shift+P: 打开命令面板。在打开的输入框内,可以输入任何命令,例如:

按一下Backspace会进入到Command+P模式

Command+P下输入>可以进入Command+Shift+P模式

Command+P窗口下还可以:

  ○ 文件名 跳转到对应文件
  ○ `?` 列出当前可执行的动作
  ○ `!` 显示 Errors或 Warnings,也可以`Command+Shift+M`
  ○ `:` 跳转到行数,也可以`Command+G`直接进入
  ○ `@` 跳转到 symbol(搜索变量或者函数),也可以`Command+Shift+O`直接进入
  ○ `@` 根据分类跳转 symbol,查找属性或函数,也可以`Command+Shift+O`后输入:进入
  ○ `#` 根据名字查找 symbol,也可以 Command+T

2.2、常用快捷键

2.2.1、编辑器与终端窗口管理

同时打开多个Vscode(查看多个项目)

  1. Command+Shift+N 打开一个新窗口
  2. Command+Shift+W 关闭窗口 同时打开多个编辑器(查看多个文件)
  3. Command+N 新建文件
  4. Ctrl+Tab 文件之间切换
  5. Command+\ 分割出一个新的编辑器(最多3个)
  6. Command+1Command+2Command+3左中右 3 个编辑器的快捷键
  7. Editor之间的互相切换: Shift + Command + [(])

2.2.2、工作区的快捷键

  1. 工作区的显示和隐藏: Command + B
  2. 工作区和编辑区的切换: Command + shift + E
  3. 工作区文件资源管理器的文件选择:H/J/K/L代表文件夹折叠(如果不是一个文件夹,将会跳到这个文件所属的文件夹上,以便可以后面折叠整个文件夹)、聚焦下一个文件、聚焦上一个文件、文件夹展开(如果不是一个文件夹,将会在编辑区打开这个文件)
  4. 打开文件之后需要固定在开启状态下:Command + K + Enter
  5. 打开调试面板:Command + Shift + D
  6. 快速聚焦到VScode的命令框:Ctrl + Z这个命令需要在键盘映射区配置,可以搜索workbench.action.terminal.focus,然后设置你自己的快捷键

2.2.3、终端区的快捷键

  1. `Ctrl + ``打开终端
  2. Command + |垂直分割终端区
  3. 终端区分割之后想在终端区之间互相切换:Command + Alt + 方向键
  4. 添加多个终端:`Ctrl + shift + ``
  5. 多个终端之间切换: Command + shift + J是聚焦下一个终端、Ctrl + shift + K是聚焦上一个终端,此二者的命令都是通过配置workbench.action.terminal.focusNextworkbench.action.terminal.focusPrevious来配置

3、iTerm终端常用的快捷键

  1. 新建一个Tab Command + t
  2. 垂直分割一个Tab Command + d
  3. 水平分割一个Tab Command + shift + d
  4. 同一个Tab内的分屏切换 Command + [
  5. Tab之间的切换 Command + 数字
  6. 查看剪贴板历史 Command + shift + h
  7. 上一条命令 Ctrl + p
  8. 命令搜索 Ctrl + r
  9. 清除当前行命令 Ctrl + u
  10. 跳转到行首 Ctrl + a
  11. 跳转到行尾 Ctrl + e
  12. 逐个字母前进或后退 Ctrl + f/b
  13. 单词级别的快速前进和后退 Alt + f/b
    1. 这个需要自己配置,配置结果如下:
  14. 删除当前光标的字符 Ctrl + d
  15. 删除光标之前的字符 Ctrl + h
  16. 删除光标之前的单词 Ctrl + w
  17. 删除到文本末尾 Ctrl + k
  18. 交换光标处文本 Ctrl + t

最后

本篇快捷键的总结会持续更新....可以关注我的博客豆米的博客