敢不敢使用纯键盘码代码?
前言
不敢说单纯使用键盘码代码的效率会比键盘鼠标结合高多少倍,但是这个过程绝对让你感觉倍爽。虽然过程很累,需要记住那么多组合按键,但是一旦熟练之后你一定会感谢现在努力的自己。
本篇文章以Vscode + Vim + iTerm的码代码的方式来总结,其他编辑器的可以自行搜索。
1、Vim的使用
既然说是纯键盘了,那么你就需要使用按键去替换鼠标的移动和各种跳转。
1.1、移动快捷键
下面介绍的是一些基本按键:
- 上下左右移动:
k
、j
、h
、l
- 会了上下左右的移动,我们想快速移动呢?
w
快速移动到光标所在单词的下一个单词词首(W
也是快速单词跳转,不过是以空格为分隔符)e
快速移动到光标所在单词的词尾或下一个单词词尾(E
也是类同于W
)b
快速移动到光标所在单词的词首或上一个单词的词首(B
也是类同于W
)- $ 快速移动到行尾
0
快速移动到行首(含空格)^
快速移动到行首非空格的字符f+任意字符
快速跳到所在行指定的任意字符(向前搜索)t+任意字符
快速跳到所在行指定任意字符的前一个字符(向前搜索)F+任意字符
快速跳到所在行指定的任意字符(向后搜索)T+任意字符
快速跳到所在行指定任意字符的前一个字符(向后搜索)Space
逐个字母移动Shift+*
可以快速向下查找光标聚焦的单词Shift+#
可以快速向上查找光标聚焦的单词
- 会了行上的快速移动,现在想要文件内部的快速移动呢?
Ctrl+f
快速翻到下一页(f表示的单词应该是forward)Ctrl+b
快速翻到上一页(b表示的单词应该是back)Ctrl+d
快速向下翻动半页Ctrl+u
快速向上翻动半页G
快速到达文章末尾gg
快速到达文章开头H
快速到屏幕的首行(等价于单词Head)M
快速到屏幕的中间行(等价于单词Middle)L
快速到屏幕的最后一行(等价于单词Low)Enter
光标向下移动
- 会了文件内部的快速移动,项目内代码的移动呢?
Ctrl+]
快速跳转到定义处Ctrl+o
回到之前跳转的地方
- 如果我想阅读代码,有更好的方式吗?
Ctrl+e
可以逐行下滚Ctrl+y
可以逐行上滚zt
可以将光标所在行直接置为首行(t
应该为top
)zz
可以将光标所在行直接置为屏幕中间行zb
可以将光标所在行直接置为屏幕末尾行(b
应该为bottom
)
- 如果我想找某个单词呢?
在Normal模式下以
/
开头,输入你想查找的单词,然后回车,vim就会帮你定位到匹配中的单词,之后n
和N
便是查找下一个
和查找上一个
的意思。
1.2、在Normal模式下快速编辑
x/X
可以向前或者向后删除单词dd
剪切当前行dw
从光标处剪切到下一个单词词首之前(包含空格),这种组合键其实是将各自按键的结果组合起来,所以很好记de
从光标处剪切到下一个单词词首之前(不包含空格)- 以此类推,
d
剪切键还可以和$
、0
、l
、G
、B
、H
、M
、L
等按键合作,不再赘述 yy
复制当前行y
和d
也是一样,可以和各种按键合作,比如想复制光标出后4个单词,可以y4l
就行了。p
在光标所在行的下一行粘贴剪切板的东西,P
反之在上一行粘贴。J
将光标所在行与下一行的数据结合成同一行Ctrl+r
恢复上一步被撤销的操作.
重复最近一次所做的编辑操作r
替换光标所在字符R
替换从光标处开始多个字符xp
快速交换单词
1.3、编辑模式
i
在光标所在位置进入编辑模式a
在光标所在位置的后一个字符进入编辑模式o
在光标所在行的下一行进入编辑模式O
在光标所在行的上一行进入编辑模式A
在光标所在行的结尾处进入编辑模式I
在光标所在行的行首处进入编辑模式c
剪切光标所在行之后进入编辑模式,光标仍留在当前行s
剪切光标聚焦的单词并进入编辑模式~
将光标所在位置的字符进行变更大小写gu
将光标所在位置的字符变成小写Gu
将光标所在位置的字符变成大写
1.4 Virtual模式
- 用
v
命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。 - 用
V
命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。 - 用
Ctrl-V
进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。 vis
选中一个句子vip
选中一个段落
...更多搭配可以自由随心组合^_^
1.5、文件的保存
在Normal模式下,文件保存的操作如下:
:w
:保存编辑后的文件内容,但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。:w!
:强制写文件,即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件,例如,原有的文件为只读文件,则可使用这个命令强制写入。但是,这种命令用法仅当用户是文件的属主时才适用,而超级用户则不受此限制。:wq
:保存文件内容后退出vim编辑器。:wq!
:强制保存文件内容后退出vim编辑器ZZ
:使用ZZ命令时,如果文件已经做过编辑处理,则把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。否则只是退出vim而已。注意,ZZ命令前面无需加冒号“:”,也无需按Enter键。:q
:在未做任何编辑处理而准备退出vim时,可以使用此命令: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,然后使用.
就可以将之前搜索选中的所有单词一个个替换掉。(超级好用的一个高级操作)
3. 因为有之前对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、主命令框
F1
或Command+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(查看多个项目)
Command+Shift+N
打开一个新窗口Command+Shift+W
关闭窗口 同时打开多个编辑器(查看多个文件)Command+N
新建文件Ctrl+Tab
文件之间切换Command+\
分割出一个新的编辑器(最多3个)Command+1
、Command+2
、Command+3
左中右 3 个编辑器的快捷键- Editor之间的互相切换:
Shift + Command + [(])
2.2.2、工作区的快捷键
- 工作区的显示和隐藏:
Command + B
- 工作区和编辑区的切换:
Command + shift + E
- 工作区文件资源管理器的文件选择:
H/J/K/L
代表文件夹折叠(如果不是一个文件夹,将会跳到这个文件所属的文件夹上,以便可以后面折叠整个文件夹)、聚焦下一个文件、聚焦上一个文件、文件夹展开(如果不是一个文件夹,将会在编辑区打开这个文件) - 打开文件之后需要固定在开启状态下:
Command + K + Enter
- 打开调试面板:
Command + Shift + D
- 快速聚焦到VScode的命令框:
Ctrl + Z
,这个命令需要在键盘映射区配置,可以搜索workbench.action.terminal.focus
,然后设置你自己的快捷键
2.2.3、终端区的快捷键
- `Ctrl + ``打开终端
Command + |
垂直分割终端区- 终端区分割之后想在终端区之间互相切换:
Command + Alt + 方向键
- 添加多个终端:`Ctrl + shift + ``
- 多个终端之间切换:
Command + shift + J
是聚焦下一个终端、Ctrl + shift + K
是聚焦上一个终端,此二者的命令都是通过配置workbench.action.terminal.focusNext
和workbench.action.terminal.focusPrevious
来配置
3、iTerm终端常用的快捷键
- 新建一个Tab
Command + t
- 垂直分割一个Tab
Command + d
- 水平分割一个Tab
Command + shift + d
- 同一个Tab内的分屏切换
Command + [
- Tab之间的切换
Command + 数字
- 查看剪贴板历史
Command + shift + h
- 上一条命令
Ctrl + p
- 命令搜索
Ctrl + r
- 清除当前行命令
Ctrl + u
- 跳转到行首
Ctrl + a
- 跳转到行尾
Ctrl + e
- 逐个字母前进或后退
Ctrl + f/b
- 单词级别的快速前进和后退
Alt + f/b
- 这个需要自己配置,配置结果如下:
- 删除当前光标的字符
Ctrl + d
- 删除光标之前的字符
Ctrl + h
- 删除光标之前的单词
Ctrl + w
- 删除到文本末尾
Ctrl + k
- 交换光标处文本
Ctrl + t
最后
本篇快捷键的总结会持续更新....可以关注我的博客豆米的博客
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 敢不敢使用纯键盘码代码? 的内容有疑问,请在下面的评论系统中留言,谢谢。