2012-11-02 16 views
29

私は、Vimの1つのウィンドウと複数のウィンドウを切り替えるのに、ZoomWin:https://github.com/vim-scripts/ZoomWinを使用しました。しかし、このプラグインには大きな問題があります。私が複数のウィンドウ(垂直分割)を復元しようとすると、約2〜4秒の遅延があります。VimのウィンドウをZoomWinよりもズームする方が良いでしょうか?

あなたはその遅れを避ける方法を知っていますか?それとももっと良い解決策かもしれません。

バージョン25解決される問題:ウィンドウローカル変数のhttps://github.com/regedarek/ZoomWin

+0

遅れが原因で、私にとってはzoomwinが動作しなくなります。 – arcseldon

+0

下記のBenCの回答はperfです。必要です。 – arcseldon

答えて

42

私は私が別のシステム上で動作するときにそれらに依存したくないとして任意のプラグインなしでVimを使用するようにしてください。今、この同じ問題時に来て、私はOPからの要求に応じて、いくつかの「より良い方法」(代替方法)を提案することができます。

  • c-w-|ウィンドウが引き継ぐ持っている(vsplitsを使用している場合)。回復するにはc-w-=c-w-_水平分割の場合
  • 他のウィンドウを閉じ、現在のフルスクリーンを1つにします。分割および現在のペインのために利用可能な場合
  • 使用tmuxを復元すると、フルスクリーンの切り替えにVIM、c-b-zの複数のインスタンスを実行するために、バッファから再オープン

私は、知覚実用性のためにこれらを列挙されています。エクスペリエンスはもちろんプラグイン専用の方が良いでしょうが、それは必ずしもオプションではありません。

12

ZoomWinバージョン24導入セーブ。私が試してみたところ、私がインストールしたさまざまなプラグインと、さまざまなイベントハンドラをインストールするため、おそらく許容できないパフォーマンスがあることがわかりました。

私はプラグインの作者に私の問題を報告してきたし、彼はZoomWinの

v25aをg持っていると答え:zoomwin_localoptlistとnoautocmdものを。

だから、どちらか(私がやったもの)バージョン23に戻してみてください、または言及した設定で、最新バージョンを試してみるhttp://drchip.org/astronaut/vim/index.html#ZOOMWIN

+3

ありがとう!バージョン25優れています。私はちょうど私のGithubアカウントに最新バージョンをプッシュしました。 https://github.com/regedarek/ZoomWin – tomekfranek

+0

はい、私はv25dで試したところ、v23ほど速いわけではありませんが、私の古いノートパソコンの遅延は〜200msです。 –

+0

元の著者はこれ以上それを維持していませんか?彼の許可はありますか? –

28

からオフになっsimple alternative(何が必要に応じて十分とすることができます):

" Zoom/Restore window. 
function! s:ZoomToggle() abort 
    if exists('t:zoomed') && t:zoomed 
     execute t:zoom_winrestcmd 
     let t:zoomed = 0 
    else 
     let t:zoom_winrestcmd = winrestcmd() 
     resize 
     vertical resize 
     let t:zoomed = 1 
    endif 
endfunction 
command! ZoomToggle call s:ZoomToggle() 
nnoremap <silent> <C-A> :ZoomToggle<CR> 
+0

これは実際にはかなり良いです! – Abdo

+1

@Abdo:実際には、tmux ;-)に ''を使用しているので、実際には ' 'にマップしました。この組み合わせをtmux =と一緒に使用している場合は、別のものに再マップする必要があります。 – BenC

+0

ハハ、素敵!私はOSXでウィンドウを展開するためのショートカットとして 'cmd shift e'を持っているのでそれを' E 'にマッピングしました=) – Abdo

2

もう1つの簡単な方法は:tab splitです。現在のタブのレイアウトは変更されません。欠点は、タブのサポートにVim 7.0以上が必要だということです。

nnoremap <leader>t :call TabToggle()<cr> 
function! TabToggle() 
    if tabpagewinnr(tabpagenr(), '$') > 1 
    " Zoom in when this tab has more than one window 
    tab split 
    elseif tabpagenr('$') > 1 
    " Zoom out when this tab is not the last tab 
    if tabpagenr() < tabpagenr('$') 
     tabclose 
     tabprevious 
    else 
     tabclose 
    endif 
    endif 
endfunction 
関連する問題