许多代码编辑器的官网都会展示自己的多光标编辑功能,乍一看这似乎是个效率很高很花哨的功能,但是实际上我从来没能真正的在实际写代码时利用它。
最早推出多光标编辑的可能是 Sublime Text,但是我没有使用过。我在使用 Atom 的时候第一次接触到这个,Atom 激活多光标的方法之一是使用 Ctrl + 鼠标点击来产生多个光标,这可以让你快速的定位到你需要编辑的位置,唯一的缺点是你的手需要先离开键盘去拿鼠标。如果你不想让手离开键盘再回来(或者你的场景不适合用鼠标),那剩下的插入光标的方法无非是在上一行或者下一行的相同列插入光标,或者选中什么文本然后在所有相同的文本处插入光标。
这就导致一个关键问题:每当我意识到“这个地方是否可以用多光标编辑一次解决”的时候,最后都会变成用查找替换解决。不信?当你在所有相同文本处插入光标的时候,不就是对这个文本进行了一次查找吗?然后你对所有这些光标进行的编辑也是相同的,那不就是替换吗?
或者换一种说法,其实多光标编辑最大的问题是:除了用鼠标,没有什么简单的办法定位到许多不同的需要操作的文本。这个问题也不是多光标能解决的,多光标只能解决定位之后的事。我唯一能想到的可以绕开定位问题的场景是模版补全,编辑器自动给模版里多个需要用户起变量名的地方插入多光标,用户可以一次输入这些变量名。但是这又要求模版补全的插件考虑到是否有多光标功能。
如果你能想到什么非常适合多光标编辑的场景和更加简单的用法,希望你能在评论区告诉我,这样也许我能意识到怎么用多光标更合适然后成功的把它加入我的工作流。
与此类似的是,我经常意识到在编辑代码的时候自己的操作能力是有限的。如果有一些看起来效率很高的操作,但是由于各种原因,比如使用频率太低了记不住,或者操作起来需要思考很久,那它带来的思维负担超出了进行一系列下意识简单操作的难度,我会倾向于干脆放弃。一个不太恰当的例子可能是我在 Emacs 里面实现了类似 Vim 的按 C-o 在当前行下面添加一行空行,但实际上我根本没有用过它,因为我发现我按 C-e Enter 并不会慢多少,而且我根本不需要思考就可以做出这个操作。再比如虽然几乎所有 Emacs 用户都在用 magit,但我的习惯还是回到终端里面操作 git。总之我常常羡慕别人编辑代码时花哨的操作,但同时我又会意识到这也许真的不适合我。