【问题标题】:Tips for using vim over a slow connection?在慢速连接上使用 vim 的提示?
【发布时间】:2010-10-10 22:54:09
【问题描述】:

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

【问题讨论】:

  • 进展如何?这里的任何提示是否让您的生活更轻松?我有点好奇:-)

标签: vim ssh vi


【解决方案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

【讨论】:

    【解决方案2】:

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

    玩弄类似的东西

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

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

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

    【讨论】:

    • 完全正确。我学习 vi 是为了参加跨大西洋两跳的新闻组。面对 5 秒的延迟,我能够继续打字。
    • 我不知道:10。谢谢!
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      /foo
      :map g cwbar^v^[n
      

      如果要替换,请输入 g,然后输入 n 跳过

      • cw=换字
      • ^v = crtl+v 启用录制键击,如 ESC 和 ENTER
      • ^[ = ctrl+ESC
      • n = 搜索字符串的下一个实例

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 还有tmux,作为screen的替代品。见tmux快速入门here
        【解决方案6】:

        DepeszSlow vim startup 可能不是你的情况,但也许它对你也有帮助。

        【讨论】:

          【解决方案7】:

          找出导致性能问题的原因的诀窍是禁用 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 时会导致问题:

          • matchparen.vim
          • netrwPlugin.vim
          • vimballPlugin.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 放进去,看看有没有什么不同。

          【讨论】:

          • "在慢速连接上使用 vim 的提示"
          • 你的观点是什么@ruohola? - 完整阅读我的答案,它是关于诊断哪些 Vim 插件在远程连接上表现不佳,并禁用它们。根据我的经验,这是最大的问题之一。
          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            在缓慢的连接中,逐个字符地移动光标很痛苦,因为您不会立即获得视觉反馈,因此您最终总是移动得太多或太少。

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

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

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

            【讨论】:

              【解决方案10】:

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

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

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

              【讨论】:

              • 这是因为它发送了额外的字节,还是因为它对大文件占用了 CPU?
              • @John Fouhy 我不确定!使用这两个选项运行 script 时,生成的黑白文件的字符数减少了 50 个。看起来每次颜色变化时它都会发送另外几个字节。
              • (续)不过,我认为 CPU 的限制更多。在编辑长 html 文件时运行 top 时,CPU 有时会因颜色而飙升至 100%(并且不稳定),但对于无语法则根本没有达到这一点。 (当然,这是一项纯粹的非科学研究!)
              【解决方案11】:

              几件事情要调查。

              • :他懒惰重绘
              • :he ttyfast
              • :他不同步

              【讨论】:

              • 好。这些是旧 vi redraw 选项的扩展,我在 30 年前使用超过 1200 波特的哑终端时使用该选项。
              【解决方案12】:

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

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

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

              Remotely Programming

              【讨论】:

              • 有时文件太大,无法像这样移动。
              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

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

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

                【讨论】:

                  【解决方案15】:

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

                  【讨论】:

                    猜你喜欢
                    • 2012-06-30
                    • 1970-01-01
                    • 2018-02-03
                    • 2017-04-17
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-22
                    • 1970-01-01
                    • 2012-02-21
                    相关资源
                    最近更新 更多