既存のウィンドウ(分割)を取得して新しいタブに配置する方法はありますか?
既存のウィンドウ(分割)を取得して新しいタブに配置する方法はありますか?
回答:
だけでなく、以前に示唆したようにしたよう:tabedit
なアプローチは、それを行うための迅速な方法は、ヒットに(通常モードで)ですCtrl- - 。W Shift TCtrl-Wは、さまざまなウィンドウ操作コマンドの一般的なプレフィックスです。
見る:
:help Ctrl-W_T
:help Ctrl-W
help Ctrl-W_T
のヘルプ項目に移動しますCtrl-W_t
(小文字)、しかし、さらにページの下でCtrl-W_T
(資本Tとの)エントリ、と言って、「新しいタブページに現在のウィンドウを移動します....」
:echo bufnr("")
できます。この番号を使用して、:sp #3
またはでウィンドウを分割できます:sb 3
(番号が3であると仮定)。これを簡単にするために、いくつかのマッピングまたは関数を考え出すことができる場合があります。
:sb
ますが、Vimの最近のバージョン(> = 7.3)ではset undodir=/path/to/dir
、/ path / to / dirが設定したディレクトリを設定することで、永続的な取り消しを使用することもできます。目的のために作成され、その後 set undofile
。これにより、vimを終了して再起動しても、元に戻す/やり直しの状態を維持できます。
試す
:tabedit %<CR>
C-w T
同じことをするためのより速い方法です
これにより、最新のバッファが新しいタブに移動し、現在のタブの以前のバッファが復元されます。新しいファイルをGvimにドラッグした後、これを使用します
:sbp |wincmd p| wincmd T
そのようにCtrl-Backspaceにマッピングできます
:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>
それは特にうまくいきます
:set switchbuf=usetab
私はこれを使用して、ホットキーまたはコマンドのペアにバインドできる2つの機能を提供し、非常に直感的に機能します。私はそれが例よりもさらに友好的な行動を提供すると確信していますCtrl-W_T
。
たとえば、複数のウィンドウが複数のタブで開いている場合、この関数を使用すると、現在のウィンドウを次または前のタブに明確に移動でき、最初のタブの前または最後のタブの後に何かを移動すると、ウィンドウが変わりますまったく新しいタブに。
つまり、2つのタブがあり、それぞれが単一のウィンドウを持っている場合、最初のタブのウィンドウを右に移動すると、2番目のタブと結合して、2つのウィンドウを持つ1つの単一のタブになります。この操作が従来のコマンドを使用してどのように複雑になるかはわかりません。
つまり、1組の移動コマンドを使用すると、ウィンドウをタブの周りに移動したり、ウィンドウをタブに分割したり(ウィンドウを最後まで押し出して)、個別のタブを単一のタブ内のウィンドウに結合したりできます。おそらく、位置の配置(これは別のトピックであり、組み込みのCtrl-W
+ Shift-HJKL
コマンドが適切に機能する)に不足しています。