代码编辑器中的文本操作技巧
要在代码编辑器里面实现光标飞舞的超高编码效率,除了使用 Vim 之外,熟练文本操作也很关键。
最近开始使用 Zed 作为我的主力代码编辑器,在 Zed 官网发现了一篇非常不错的文章(Text Manipulation Kung Fu for the Aspiring Black Belt)介绍如何修炼自己的文本操作功夫,非常不错,学习并写下了这篇博客作为记录。
原文开篇第一句话很有趣:
在软件开发领域,文本编辑器不仅是工具,更是程序员的延伸。正如武术家精准优雅地舞动长剑,程序员驾驭着文本编辑器,以深思熟虑的意图剖析文本行。
在代码编辑器中的所有文本操作本质上都是在执行编辑器命令面板中提供的命令行,一般使用 Shift + Cmd + P
即可打开命令面板,然后搜索相关命令回车执行即可,但是这种方式效率极低。
通过快捷键来执行这些命令可以大大提高效率,但是记住大量的快捷键也是很困难的事情,更好的方式是只熟练使用一些最基础的快捷键(就像 Cmd + C
一样),复杂的高级操作还是借助命令面板来执行。
这些最基础的快捷键就是本文想重点介绍的文本操作技巧,并且不仅限于 Zed,几乎所有代码编辑器都支持。
光标导航
最基础的做法是通过 Up
/Down
/Left
/Right
方向键移动光标进行导航,配合修饰符则可以实现更高效的移动。
Cmd
Windows 对应
Ctrl
键。
使用 Cmd
配合 Up
/Down
/Left
/Right
方向键可以实现跳转到编辑器的某个边缘,比如:
Cmd + Left
跳转到当前行的行首Cmd + Right
跳转到当前行的行尾Cmd + Up
跳转到当前文件首行开头Cmd + Down
跳转到当前文件末行结尾
Option
Windows 对应
Alt
键。
使用 Option
配合 Left
/Right
方向键可以实现以「单词」为边界的跳转(中文不太适用),比如:
Option + Left
跳转到当前单词的开头,或前一个单词的开头Option + Right
跳转到当前单词的结尾,或后一个单词的结尾
使用 Option
配合 Up
/Down
方向键可以实现对光标所在行的上下移动。
使用 Option + Ctrl
配合 Left
/Right
方向键还可以实现在子单词之间的跳转,尤其适合 camelCase 和 snake_case 这样的变量中子单词之间的跳转:
Option + Ctrl + Left
跳转到当前子单词的开头,或前一个子单词的开头Option + Ctrl + Right
跳转到当前子单词的结尾,或后一个子单词的结尾
文本选取
Shift
将上述的光标导航操作配合 Shift
键,可以实现文本选取,比如:
Shift + Cmd + Left
选取当前光标位置到当前行的行首Shift + Cmd + Right
选取当前光标位置到当前行的行尾Shift + Option + Left
选取当前光标位置到当前单词的开头,或到前一个单词的开头Shift + Option + Ctrl + Right
选取当前光标位置到当前子单词的结尾,或到后一个子单词的结尾- 以此类推……
当光标选中某个内容后,使用 Shift + Cmd + L
可以快速选中当前文件中所有相同的内容,这通常用于批量选中同一变量。当批量选中一批变量之后使用 ESC
可取消选中,但是光标还同时存在于多个变量的相同位置(适合批量编辑变量),再次 ESC
后光标可回到起点位置。
按住 Shift + Option
后在列方向上拖拽光标,可以实现列方向上的选取。