低速接続で vim を使用していますが、少し苦痛です。痛みを和らげるためにvimでできることはありますか?
15 に答える
vi は 300 ボー以上のモデムを使用するように作成されました。そのため、移動およびナビゲートするための面白くて奇妙な (そして短い) コマンドがすべて存在します。それらを学ぶ...
次のようなもので遊ぶ
:10 -> 10行目にジャンプ 7j -> 7 行下に移動
また、私のキーボードにはキー f と j に小さなドットがあるので、キー j のドットを使用して vim ナビゲーション "hjkl" を簡単に見つけることができます。
しかし、最善の方法は、決してスクロールしないことです。移動するための検索は命の恩人です。検索すると、ポインターが検索対象にすぐに到達するため、遅いナビゲーションは必要ありません。これは、ssh 経由で非常に大きなファイルを編集することになった場合に非常に便利です...
調べることはほとんどありません。
- :he lazyredraw
- :彼はttyfast
- :彼は nofsync
timeoutとttimeoutをオフに設定してみると、Vim は完全なマッピングまたはキー シーケンスが受信されるまで待機します。
または、timeoutlen値を増やすことができます。これは、キー コードまたはマップされたキー シーケンスが完了するまで待機するミリ秒単位の時間です。
ローカルで編集してファイルを転送するのが最善の方法だと思います。これを自動化して、リモートで編集しているように感じることができます。
http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim
この関連する質問への回答も参照してください。
パフォーマンスの問題の原因を突き止める秘訣は、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を起動します-設定がないと奇妙に見えるかもしれません。しかし、今は問題なく機能するはずです。
次に、問題の原因がわかるまで、ビットを1つずつ戻し始めます。
これを行ったところ、VPN経由でVimを使用すると、次のストックプラグインが問題を引き起こすことがわかりました。
- matchparen.vim
- netrwPlugin.vim
- vimballPlugin.vim
これらのプラグインがもたらす問題のほとんどは、(BufEnter中のように)新しいautocmdを追加することです。これは、リモートファイルを編集するときにうまく機能しません。パフォーマンスの問題を引き起こす可能性のある独自のプラグインもある場合があります。
次に、リモートで作業するときにこれらのautocmdを削除する関数を作成しました。
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を入れて、違いが出るかどうかを確認してください。
これが当てはまるかどうかはわかりませんが、接続がまったく気まぐれでドロップアウトする可能性がある場合は、「screen」でvimを使用します。screen は、ドロップアウトした場合に再接続できる仮想端末を提供するため、vimウィンドウは永続的です。
SSH を使用していますか? その場合は、SSH 圧縮を使用してください。ssh -C
かなり役立つはずです。
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)
そして、「ssh」の代わりに「mosh」を使用してください。
これは低速接続用に設計されており、低速の 3G 接続での簡単なテストからサーバーまで、非常にうまくサポートしているようです。
注意: 非標準ポートに接続する場合は、必ず /etc/ssh/ssh_config を更新してください。
繰り返されるタスクの場合、一連のコマンドを 1 つのキーストロークにマップできます。単語 (foo と bar) を検索して置換したいが、そのすべてのインスタンスではないとします。
/foo
:map g cwbar^v^[n
置換する場合は g を入力し、スキップする場合は n を入力します
- cw=単語を変更
- ^v = crtl+v は、ESC や ENTER などのキーストロークの記録を有効にします
- ^[ = Ctrl+ESC
- n = 検索文字列の次のインスタンス
ショートカットを使用してファイルを上下に移動したり、行に沿って移動したりすることで、少しずつ痛みを和らげることができますが、私がよく経験したように、低速の接続で何かを行うのは非常に苦痛です. scp
可能であれば、ファイルをワークステーションに転送し、そこで平和的に編集し、ロードし直すことで、多くの時間とフラストレーションを節約できることがわかりました。
cursorline
オプションまたはを設定しないでくださいcolorcolumn
。そうしないと、vim がかなり遅くなります。