在高延迟环境中使用 vim

在高延迟环境中使用 vim

我使用 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 插件是一个很好的解决方案,我多次使用它在非常缓慢和不可靠的连接上进行开发。

相关内容