Vimの分割ウィンドウをキャンセル


231

ウィンドウを水平に分割しました。どうすれば通常のモードに戻ることができますか。つまり、開いているウィンドウをすべてキャンセルせずに、1つのウィンドウだけを分割するウィンドウはありません。私は5を持っており、「終了」するのではなく、分割ウィンドウから抜け出したいだけです。


7
eckesの答えを受け入れることができる可能性はありますか?それは現在受け入れられているものよりもはるかに便利です...
カイルストランド

回答:


288

Control+を押しw、次にを押しqて、一度に各ウィンドウを閉じます。

更新:on 一度に1つのウィンドウで実行したくない場合は、以下のように、より役立つ可能性のあるeckes回答も検討してください。


9
私は同意しますが、OPはeckesの回答を選択しなかったため、自分で変更することはできません。
ウォレンP

4
これが正解だと確信しています。これは私のためにそれをしました、そしてあなたがオペレーションの質問を見るならば、彼は他の開いているウィンドウを閉じたくありませんでした、最近分割されたものだけです。
2014

1
表示されたバッファに保存されていない変更が含まれている場合は役に立ちません。私は!しかし、私は方法がわかりません。初心者として私は今迷っています。
musiKk

2
それを保存します。保存する方法がわからない場合は、この答えは必要ありません。保存する権限がなくても可能です。
Warren P

1
従来のGUIエディターから来た、これはかなり奇妙な概念です。hiddenしかし、設定は役立つようです。しかし、私が意味したことは、どうやって!ショートカットに?「Cw!q」、「Cw q!」、「!Cw q」、「C-!w q」ですか?私はそれらのどれもないと思いますが、私はすでに新しいバッファを作成する方法を忘れていたので、これは読者のための練習です。
musiKk 2015

265

すべてのスプリットを閉じるには、通常、オンに表示されるウィンドウにカーソルを置き:on、現在のウィンドウをオンに表示されるウィンドウにします。覚えやすいニーモニック。


編集: :help :onこれらのコマンドが同じであることを示しました:

これらの4つはそれぞれ、アクティブなウィンドウを除くすべてのウィンドウを閉じます。


8
+1他のウィンドウに意図しない変更が含まれている場合、:onは応答しE445: Other window contains changes、他のウィンドウを閉じません。たとえば、私は通常、新しいウィンドウを作成し、そこにヤンクしたいファイルを読み込みます。この場合、Vimは他のウィンドウに未書き込みの変更があると見なします。そのような場合は、を使用:on!して強制的に閉じます。
Sabuncu 2013年

61

現在のウィンドウ以外のすべてのウィンドウを閉じるには:

CTRL+ wo

つまり、最初にCTRL+ w、次にoです。


3
CTRL+W o誤って入力したものを元に戻す方法もあるのでしょうか。
Paolo

30

現在のウィンドウを閉じるための2つの代替方法はZZ、およびですZQ。これらは、それぞれ、表示されたバッファへの変更を保存するか、保存しません。


10
これは確かに「vimの方法」です。crtl+ woは非常にエマックのようです。
Andy Hayden

Zはドイツ人なので嫌いです。(スポイラー:DE / EN設定を頻繁に切り替える場合のキーボードレイアウト)
Tino

6

:hideコマンドは、現在フォーカスされているウィンドウを非表示にします。これがあなたが探している機能だと思います。

ウィンドウ間を移動するには、Ctrl + wの後にナビゲーションキー(h、j、k、l、または矢印キー)を入力します。

詳細については、vimで実行:help window:help hideてください。


これは素晴らしい。Chrome(sshプラグインを使用)は、<CW>を「タブを閉じる」としてトラップし、vimのすべての<cw>ウィンドウコマンドを効果的に無効にします。代替手段があると便利です。
手綱

6

から:help opening-window(「ウィンドウを閉じる」を検索- /Closing a window

  • :q[uit]現在のウィンドウとバッファを閉じます。それが最後のウィンドウであれば、vimも終了します
  • :bd[elete] 現在のバッファをアンロードし、現在のウィンドウを閉じます
  • :qa[all]または、:quita[ll]すべてのバッファとウィンドウを閉じてvimを終了します(:qa!変更を保存せずに強制するため)
  • :clo[se]現在のウィンドウを閉じますが、バッファは開いたままにします。ウィンドウが1つしかない場合、このコマンドは失敗します
  • :hid[e]現在のウィンドウでバッファを非表示にします(続きを読む:help hidden
  • :on[ly] 他のすべてのウィンドウを閉じますが、すべてのバッファは開いたままにします

5

ctrl+ wあなたが閉じたいウィンドウに+ を見つけて、それを行うだけです:q。これは私にとってはうまくいきます。


これは実際には重複した答えであり、3年以上そこに置かれているものの重複です。
Warren P

@WarrenPは重複のようには見えません。私は^W^W:q可能な解決策として言及している他の答えを見つけられなかったので、分割を取り除く。を閉じたいウィンドウに切り替えるためのの^W to the window you want to close複数の使用を意味することに注意してください^W^W..
Tino

私の悪い。もう1つは^ W、次にo
Warren P

2

私はあなたの意図をよく理解しています。バッファも排他的に使用し、必要に応じて分割することもあります。

以下は私の抜粋です .vimrc

" disable macro, since not used in 90+% use cases
map q <Nop>
" q,  close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window    -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200   " let vim wait less for your typing!

これは私のワークフローに非常によく適合します

q押された場合

  • 複数のウィンドウが開いている場合は現在のウィンドウを非表示にし、それ以外の場合はvimを終了してみます。

qo押された場合、

  • 他のすべてのウィンドウを閉じます。ウィンドウが1つだけの場合は効果がありません。

もちろん、その乱雑な部分を関数ラップすることができます、例えば

func! Hide_cur_window_or_quit_vim()
    if winnr('$') > 1
        hide
    else
        silent! exec 'q'
    endif
endfunc
nnoremap q :call Hide_cur_window_or_quit_vim()<CR>

追記:再マップI q、私が代わりに使用し、編集するためのマクロを使用しないので:s:g:v、および必要に応じて外部テキストは、コマンドの処理、例えば、:'{,'}!awk 'some_programm'または使用:norm! normal-command-here


1

他の人がこれを行う方法の前に言ったと同じようにプレスにあるctrl+ w当時とo。これにより、他のウィンドウを閉じながら、現在のウィンドウを「最大化」します。「最大化しない」ことができるようにしたい場合は、そのためのZoomWinというプラグインがあります。それ以外の場合は、ウィンドウのセットアップを最初から再作成する必要があります。


0

さて、スクリーンセッションにデタッチして再アタッチするだけで、通常の画面に戻ります


これはvimの分割ウィンドウモードを終了しません。これは単にscreenの分割ウィンドウモードを終了します。これは簡単に間違えられる可能性があるため、他のユーザーも同様です。ところで、この画面機能は煩わしいので、デフォルトにするtmuxと、すべての分割をそのままにして再接続できます。
Tino
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.