在慢速连接上使用vim的提示?

时间:2009-03-03 05:55:33

标签: vim ssh vi

我使用vim来缓慢连接,这有点痛苦。我能用vim做些什么来减轻痛苦吗?

15 个答案:

答案 0 :(得分:16)

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

之类的东西
 :10 -> jump to line 10
 7j -> move 7lines down

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

但最棒的是永远不要滚动, 寻找移动是一种救命。 当您搜索指针时,最终会找到您搜索的内容, 这意味着不需要那些缓慢的导航。 如果您最终通过ssh编辑非常大的文件,这非常有用...

答案 1 :(得分:12)

您可以尝试设置timeoutttimeout,这样Vim就会等到收到完整的映射或密钥序列。

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

答案 2 :(得分:12)

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

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

另见这个相关问题的答案:

Remotely Programming

答案 3 :(得分:12)

很少有事情可以研究。

  • :他lazyredraw
  • :他ttyfast
  • :他nofsync

答案 4 :(得分:4)

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

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

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

在输入浏览器的textareas时,我总是想念那些命令,就像现在一样:)

答案 5 :(得分:3)

解决导致性能问题的原因是在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

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

然后我编写了一个函数来删除远程工作时的这些autocmds:

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,看看它是否有所作为。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

编辑:这也可以从vim文档中获得帮助:

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

Slow vim startupDepesz可能不是你的情况,但也许对你有帮助。

答案 12 :(得分:0)

对于重复的任务,您可以将一系列命令映射到单个击键。 让我们说你想找到并替换一个单词(foo with bar),但不是所有的实例

/foo
:map g cwbar^v^[n

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

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

答案 13 :(得分:0)

不要设置选项cursorlinecolorcolumn。否则vim会相当滞后。

答案 14 :(得分:0)

使用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)

然后只使用&#34; mosh&#34;而不是&#34; ssh&#34;。

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

NB 连接到非标准端口时,请务必更新/ etc / ssh / ssh_config