我使用 vim 多年,感觉相当熟练。然而,最近,我一直在一台 ping 时间为 520ms 的服务器上工作(悉尼到南非)。这大大增加了我更有效地使用 vim 的需要。我可以做些什么来帮助学习迄今为止我从未学过的快捷方式?
答案1
为了更有效地使用 vim,我会集中精力学习更多专门的运动命令(括号按句子移动,花括号按段落移动)。熟悉后,可以将它们与编辑命令(删除、更改等)结合使用。此外,学习“a”和“i”组合以选择(并应用命令)光标周围的对象(例如,das
删除光标所在的句子:compare to (d)
,它有三个 Shift 切换)。学习应用计数进行更大的移动(例如,c2w
更改接下来的两个单词,d2as
删除光标所在的句子和下一个句子)。使用标记跳转到常用位置。
我忘记了我最喜欢的移动命令之一:f
/ t
/ F
/T
向前或向后(分别为小写或大写)移动到下一个或紧接着您键入的下一个字符(分别为 f 或 t):f*
移动到*
右边的下一个,T(
移动到左边下一个开括号的右边(将左右交换以进行从右到左的配置)。
对于重复编辑,使用宏录制功能q
来记录和@
播放相同命令的序列。
使用寄存器而不是复制和粘贴,它将节省往返(因为宏存储在寄存器中,您可以使用寄存器存储/检索命令来修复宏中的错误而无需重新录制)。
使用:%s/…/…/g
命令进行全局替换/删除。
如果你仍然无法让它感觉舒服,你也许可以通过netrw 插件:vim scp://target/somefile
。
作为晃如下所述,这可让您在本地计算机上运行 Vim,这样就不会出现延迟问题。当您编辑远程文件时,Vim 会将其复制到本地计算机。当您保存时,Vim 会将其复制回远程计算机。它支持多种协议(WebDAV、HTTP(只读)、FTP、SSH(scp、sftp)、rsync)。
答案2
嗯,Vi被写对于慢速调制解调器链接,因此 Vi/Vim 可能是在这种情况下使用的最佳工具。
我的建议是考虑你发现自己重复的任何事情,并编写宏以避免重复。
自由使用 :map 以及(因为它是 Vim)'q' 宏录制功能(:help recording
)。
利用重复计数(如您所确定的)并使用动作来导航(如搜索并直接转到行号)而不是敲击 h/j/k/l。
因此,例如5d
向下移动 5 行,}
到达下一个空行,按 Ctrl-I 和 Ctrl-O 可后退/前进到文本中最近使用的位置(:help jumps
)。
还可以考虑下载文件并在本地进行编辑,然后上传回服务器。
答案3
正如其他人已经写的,vim 在设计时专门考虑了慢速连接,因此您只需要学会更有效地使用它。您需要学习(并了解)a/A、f/t F/T、i/I、^、$、o/O、p/P、d/D 等之间的区别。它们都很重要,可以为您节省很多动作。
但就我的经验而言,最大的问题是心理问题。你知道最终它会更快,但是现在它更快(更重要的是,对大脑更容易:)只需使用光标键:)。
为了学习有效的 vim,我所做的就是每当我发现自己做的事情效率低下时就“惩罚自己”,无论如何都要回去以正确的方式重新做一遍。
举例来说,如果你刚“发现”自己用光标键向下移动了 10 行,请返回并使用类似“10”的内容。或者更重要的是,几乎从不使用水平箭头键,而是使用 T、t、F、f、/、?。然后通过重做来“惩罚”自己。你很快就会开始做正确的事情。
哦,还有一件需要注意的事情是视觉选择模式。99%它是不需要的,因为可以用不同的方式来做同样的事情。
答案4
还有一个名为“scrolljump”的选项,它控制光标移出屏幕时要滚动的行数。这可以帮助减少需要重新绘制的屏幕面积。
但是 Chris Johnsen 提到的 netrw 插件是一个很好的解决方案,我多次使用它在非常缓慢和不可靠的连接上进行开发。