【发布时间】:2010-10-10 22:54:09
【问题描述】:
我正在通过慢速连接使用 vim,这有点痛苦。我可以在 vim 中做些什么来减轻痛苦吗?
【问题讨论】:
-
进展如何?这里的任何提示是否让您的生活更轻松?我有点好奇:-)
我正在通过慢速连接使用 vim,这有点痛苦。我可以在 vim 中做些什么来减轻痛苦吗?
【问题讨论】:
使用 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
【讨论】:
vi 的创建是为了使用超过 300 波特的调制解调器,这就是为什么有所有那些有趣和奇怪(和短)的命令来移动和导航。学习它们...
玩弄类似的东西
:10 -> 跳转到第 10 行 7j -> 向下移动 7 行因为我的键盘在 f 和 j 键上有一个小点, 我使用键 j 上的点来轻松找到 vim 导航“hjkl”。
但最好的办法是永远不要滚动, 寻找移动是一个救生员。 当您搜索时,您的指针会直接指向您搜索的内容, 这意味着不需要那些缓慢的导航。 如果您最终通过 ssh 编辑非常大的文件,这将非常有用......
【讨论】:
:10。谢谢!
不要设置选项cursorline 或colorcolumn。否则 vim 会明显滞后。
【讨论】:
对于重复的任务,您可以将一系列命令映射到单个按键。 假设您想查找并替换一个单词(foo 和 bar),但不是它的所有实例
/foo
:map g cwbar^v^[n
如果要替换,请输入 g,然后输入 n 跳过
【讨论】:
我不确定这是否适用,但如果你的连接完全是喜怒无常的并且可能会退出,我会使用带有“屏幕”的 vim。 screen 为您提供了一个虚拟终端,如果它退出,您可以重新连接,因此您的 vim 窗口是持久的。
【讨论】:
tmux,作为screen的替代品。见tmux快速入门here。
Depesz 的Slow vim startup 可能不是你的情况,但也许它对你也有帮助。
【讨论】:
找出导致性能问题的原因的诀窍是禁用 vim 中的所有功能,然后慢慢将部件重新引入,直到找出导致性能问题的原因。
即删除(或移动或重命名)以下文件/目录以快速禁用:
C:\Program Files\Vim\_vimrcC:\Program Files\Vim\vimfilesC:\Program Files\Vim\vim72\autoloadC:\Program Files\Vim\vim72\plugin在 Unix/Linux/OS X 上,这些文件应该存在于:
~/.vim/plugin~/.vim/autoload如果您在其中任何一个地方都找不到它,那么:version 命令可以显示正在使用的.vimrc 文件。插件目录应该在附近。
启动 vim - 如果没有任何设置,它可能看起来很奇怪。但它现在应该可以接受。
然后开始逐个引入位,直到找出导致问题的原因。
我这样做了,发现以下库存插件在通过 VPN 使用 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 放进去,看看有没有什么不同。
【讨论】:
你在使用 SSH 吗?如果是这样,请使用 SSH 压缩。 ssh -C 应该会有很大帮助。
【讨论】:
在缓慢的连接中,逐个字符地移动光标很痛苦,因为您不会立即获得视觉反馈,因此您最终总是移动得太多或太少。
所以对我来说最有效的是使用更智能的动作和命令,例如:
fx -- 跳转到下一个字母 x
5w -- 向前移动 5 个字ci( -- 替换括号之间的内容dap -- 删除当前段落我在浏览器的文本区域中输入时总是想念这些命令,就像现在一样 :)
【讨论】:
我的建议是关闭 vim 中的语法高亮。特别是对于大文件,这使 vim 对我来说响应更快。 (:syntax off)
编辑:这可能也有帮助,来自 vim 文档:
http://www.vim.org/htmldoc/term.html#slow-fast-terminal(看起来发布的建议已经包含此文档中的一些内容)
【讨论】:
script 时,生成的黑白文件的字符数减少了 50 个。看起来每次颜色变化时它都会发送另外几个字节。
top 时,CPU 有时会因颜色而飙升至 100%(并且不稳定),但对于无语法则根本没有达到这一点。 (当然,这是一项纯粹的非科学研究!)
几件事情要调查。
【讨论】:
redraw 选项的扩展,我在 30 年前使用超过 1200 波特的哑终端时使用该选项。
我认为最好的办法是在本地编辑它并传输文件。这可以自动化,感觉就像远程编辑:
http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim
另请参阅此相关问题的答案:
【讨论】:
通过使用快捷方式在文件中上下移动以及沿线移动可以减轻痛苦,但正如我经常遇到的那样,在慢速连接上做任何事情都是非常痛苦的。我发现如果有可能,我可以通过scp'将文件传送到我的工作站,在那里平静地编辑它,然后再加载它来节省大量时间和挫败感。
【讨论】:
您可以尝试设置timeout 和ttimeout,这样Vim 将等待直到收到完整的映射或按键序列。
或者您可以增加timeoutlen 的值,这是等待键码或映射键序列完成的时间(以毫秒为单位)。
【讨论】:
Vim 是为慢速连接而设计的。您是否正在利用运动命令和线选择操作?我的建议是好好学习 Vim 的非光标关键部分。
【讨论】: