23

我正在通过慢速连接使用 vim,这有点痛苦。我可以在 vim 中做些什么来减轻疼痛吗?

4

15 回答 15

17

vi 的创建是为了使用超过 300 波特的调制解调器,这就是为什么有所有那些有趣和奇怪(和短)的命令来移动和导航。学习他们...

玩一些类似的东西

:10 -> 跳转到第 10 行
 7j -> 向下移动 7 行

因为我的键盘在 f 和 j 键上有一个小点,所以我使用 j 键上的点来轻松找到 vim 导航“hjkl”。

但最好的事情是永远不要滚动,搜索移动是一个救生员。当您搜索时,您的指针会直接指向您搜索的内容,这意味着不需要那些缓慢的导航。如果您最终通过 ssh 编辑非常大的文件,这将非常有用...

于 2009-03-03T06:07:08.507 回答
14

几件事情要调查。

  • :he懒重画
  • :he ttyfast
  • :he 不同步
于 2009-03-04T01:33:13.383 回答
13

您可以尝试设置timeoutttimeout,这样 Vim 将等待直到收到完整的映射或键序列。

或者您可以增加timeoutlen值,这是等待键码或映射键序列完成的时间(以毫秒为单位)。

于 2009-03-03T06:07:44.107 回答
13

我认为最好的办法是在本地编辑它并传输文件。这可以自动化,因此感觉就像远程编辑:

http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim

另请参阅此相关问题的答案:

远程编程

于 2009-03-03T06:20:06.697 回答
5

在缓慢的连接中,逐个字符地移动光标是很痛苦的,因为你没有得到即时的视觉反馈,所以你总是移动得太多或太少。

所以对我来说最有效的是使用更智能的动作和命令,比如:

  • fx-- 跳到下一个字母x
  • 5w-- 向前移动 5 个单词
  • ci(-- 替换括号之间的内容
  • dap-- 删除当前段落
  • 等等。

我在浏览器的文本区域中输入时总是想念这些命令,就像现在一样:)

于 2009-03-07T03:26:18.500 回答
2

找出导致性能问题的原因的诀窍是禁用vim 中的所有内容,然后慢慢地将部件重新引入,直到找出导致性能问题的原因。

即删除(或移动或重命名)以下文件/目录以快速禁用:

  • C:\Program Files\Vim\_vimrc
  • C:\Program Files\Vim\vimfiles
  • C:\Program Files\Vim\vim72\autoload
  • C:\Program Files\Vim\vim72\plugin

在 Unix/Linux/OS X 上,这些文件应该存在于:

  • ~/.vim/plugin
  • ~/.vim/autoload

如果您在其中任何一个地方都找不到它,那么该:version命令可以显示.vimrc正在使用的文件。插件目录应该在附近。


启动 vim - 如果没有任何设置,它可能看起来很奇怪。但它现在应该可以接受。

然后开始逐个引入位,直到找出导致问题的原因。

我这样做了,发现以下库存插件在通过 VPN 使用 Vim 时会导致问题:

  • 匹配参数.vim
  • netrwPlugin.vim
  • vimball插件.vim

这些插件引入的大多数问题是添加新的自动命令(如在 BufEnter 期间),在编辑远程文件时性能不佳。您可能会发现您也有自己的插件,这可能会导致性能问题。

然后,我编写了一个函数来删除远程工作时的这些自动命令:

let g:NotEditingRemotely = 1

function! s:ToggleRemoteFile()
    if exists("g:NotEditingRemotely")
        " Disable the matchparen.vim plugin"
        :NoMatchParen

        " Turn off detection of the type of file"
        filetype off

        " Disable the netrwPlugin.vim"
        au! Network
        au! FileExplorer

        " Remove tag scanning (t) and included file scanning (i)"
        set complete=.,w,b,u,k

        " Remove these autocommands which were added by vimBallPlugin.vim"
        au! BufEnter *.vba
        au! BufEnter *.vba.gz
        au! BufEnter *.vba.bz2
        au! BufEnter *.vba.zip

        unlet g:NotEditingRemotely

        :echo 'Remote Edit mode turned on'
    else
        " Enable the matchparen.vim plugin"
        :DoMatchParen

        " Turn on detection of files"
        filetype on

        " Add back in tag scanning (t) and included file scanning (i)"
        set complete=.,w,b,u,t,i,k

        let g:NotEditingRemotely = 1

        :echo 'Remote Edit mode turned off'
    endif
endfunction

command! -nargs=0 ToggleRemoteFile call s:ToggleRemoteFile()
noremap <F6> :ToggleRemoteFile<CR>

放入你的 vimrc 看看它是否有区别。

于 2009-11-03T00:46:13.617 回答
2

我不确定这是否适用,但如果你的连接完全是喜怒无常的并且可能会退出,我会使用带有“屏幕”的 vim。screen 为您提供了一个虚拟终端,如果它退出,您可以重新连接到该终端,这样您的 vim 窗口是持久的。

于 2009-11-03T15:17:13.677 回答
1

我的建议是关闭 vim 中的语法高亮。特别是对于大文件,这使 vim 对我来说响应更快。( :syntax off)

编辑:这也可能有帮助,来自 vim 文档:

http://www.vim.org/htmldoc/term.html#slow-fast-terminal(看起来发布的建议已经包含了这个文档中的一些内容)

于 2009-03-03T18:15:18.647 回答
1

Vim 是为慢速连接而设计的。您是否正在利用运动命令和线选择操作?我的建议是好好学习 Vim 的非光标关键部分。

于 2009-03-03T06:00:39.193 回答
1

你在 SSH 上吗?如果是这样,请使用 SSH 压缩。ssh -C应该有很大帮助。

于 2009-04-27T23:14:39.687 回答
1

使用 mosh:http ://www.linuxscrew.com/2012/04/11/why-mosh-is-better-than-ssh/?replytocom=804158#respond

apt-get install mosh
yum install mosh
(or whatever appropriate command for your system)

然后只需使用“mosh”而不是“ssh”。

它是为慢速连接而设计的,从对我的慢速 3G 连接的快速测试到服务器,它似乎都很好地支持它。

注意当连接到非标准端口时,一定要更新 /etc/ssh/ssh_config

于 2015-01-19T11:38:35.070 回答
0

不要设置选项cursorlinecolorcolumn. 否则 vim 会明显滞后。

于 2013-04-04T09:59:46.900 回答
0

通过使用快捷方式在文件中上下移动并沿线移动可以减轻痛苦,但正如我经常经历的那样,在慢速连接上做任何事情都是非常痛苦的。我发现如果有可能,我可以scp通过将文件传送到我的工作站、在那里平静地编辑它并重新加载它来节省大量时间和挫败感。

于 2009-03-03T06:08:02.343 回答
0

对于重复的任务,您可以将一系列命令映射到单个按键。假设您要查找和替换一个单词(foo 和 bar),但不是它的所有实例

/foo
:map g cwbar^v^[n

如果要替换,请键入 g 和 n 跳过

  • cw=换字
  • ^v = crtl+v 启用录制键击,如 ESC 和 ENTER
  • ^[ = ctrl+ESC
  • n = 搜索字符串的下一个实例
于 2011-10-24T06:47:47.120 回答
0

Depeszvim 启动缓慢可能不是你的情况,但也许它对你也有帮助。

于 2009-11-03T11:08:04.173 回答