Up: 目次   [Index]


タブページを操作するコマンド

*tabpage.txt*   For Vim バージョン 8.1.  Last change: 2019 May 05


		  VIMリファレンスマニュアル    by Bram Moolenaar

タブページの使ひ方

タブページを使ふために追加されたコマンドについて說明します。複數のタブページを開いてゐると違ふ働きをするコマンドについても說明します。

1. はじめに|tab-page-intro|
2. コマンド|tab-page-commands|
3. その他|tab-page-other|
4. ’tabline’ の設定|setting-tabline|
5. ’guitablabel’ の設定|setting-guitablabel|

{|+windows| が有效な場合のみ利用できます}

1. はじめに

タブページは複數のウィンドウを持てます。タブページを使ふと、作業別のウィンドウの集合を簡單に切り替へることができます。

通常、Vim ウィンドウの最上部にタブページを表すラベルの一覽が表示されます。そのラベルをマウスでクリックすると、そのタブページにジャンプできます。他の方法でもタブページを移動できます。

ほとんどのコマンドは作業中のタブページ內だけで動作します。|CTRL-W| コマンドや、|:tab| を前置しない |:windo|, |:all|, |:ball| なども同樣です。カレントタブページ以外にも作用するコマンドについては以下で說明してゐます。

タブページを使ふと、一時的なバッファを使用するときに、作業中のウィンドウレイアウトを變更しなくてすみます。新しいタブページを開いて、何か作業をし、そのタブページを閉ぢる、といふ具合です。

2. コマンド

タブページを開くには:

Vim を "vim -p filename ..." と起動すると、それぞれのファイルごとに (最大 ’tabpagemax’ までの) タブページを開けます。|-p| 參照。

CUI の Vim でタブページラインをダブルクリックすると新しいタブページが作成されます。新しいタブページはクリックした場所の左に作成されます。最初のクリックが他のタブページの選擇になつてしまふときは、スクリーンが餘計に更新されます。

この機能は Win32 と Motif の GUI でも使へます。ただし、ラベルの右をクリックした場合のみです。

GUI でタブページラインを右クリックするとメニューが表示されます。|tabline-menu|

關聯する自動コマンドについては、|tabnew-autocmd| を參照してください。

:[count]tabe[dit] または
:[count]tabnew

カレントタブページの後ろに空のウィンドウを持つた新しいタブページを作成します。[count] が與へられる場合、新しいタブページは [count] 番目のタブページの後ろに作成され、[count] が省略される場合はカレントタブページの後ろに作成されます。

:tabnewカレントタブページの後ろに新規タブページを作成
:.tabnew同上
:+tabnew右のタブページの後ろに新規タブページを作成
注: tabnew よりも 1 つ右側に作られる
:-tabnewカレントタブページの前に新規タブページを作成
:0tabnew新規タブページを左端に作成
:$tabnew新規タブページを右端に作成
:[count]tabe[dit] [++opt] [+cmd] {file} または
:[count]tabnew [++opt] [+cmd] {file}

{file} を新しいタブページで開きます。|:edit| と同じです。[count] については上記 |:tabnew| 參照。

:[count]tabf[ind] [++opt] [+cmd] {file}

path’ 內の {file} を新しいタブページで開きます。|:find| と同じです。[count] については上記 |:tabnew| 參照。

{|+file_in_path| が有效な場合のみ利用できます}

:[count]tab {cmd}

{cmd} を實行します。そのコマンドが新しいウィンドウを作成するときは、その代はりに新しいタブページを作成します。|:diffsplit| と |:diffpatch|, |:execute|, |:normal| に對しては機能しません。[count] を指定すると、現在のタブページから見て [count] 番目のタブページの後ろに作成されます。 例:

:tab split現在のバッファを新規タブで開く
:tab help gt"gt" に對するヘルプを新規タブで開く
:.tab help gt同上
:+tab help次のタブページのその次に help のタブページを開く
:-tab help現在のタブの前に help のタブを開く
:0tab help最初のタブページの前に help のタブページを開く
:$tab help最後のタブページの次に help のタブページを開く
CTRL-W gf

カーソル下のファイル名のファイルを新しいタブページで開きます。|CTRL-W_gf| を參照してください。

CTRL-W gF

カーソル下のファイル名のファイルを新しいタブページで開きます。そして、ファイル名の後ろに指定された行番號にジャンプします。|CTRL-W_gF| を參照してください。

タブページを閉ぢるには:

複數のタブページを開いてゐるときは、タブページ內の最後のウィンドウを閉ぢると、そのタブページが閉ぢられます。

タブページラインが表示されてゐるときは、右上に表示されてゐる "X" をマウスでクリックすると、カレントタブページが閉ぢます。|'tabline'| を設定してゐるときは、他の何かが表示されてゐるかもしれません。

:tabc[lose][!]

カレントタブページを閉ぢます。

このコマンドは次のときに失敗します:

バッファの變更はファイルに保存されませんが、失はれることもありません。このコマンドは安全なコマンドです。

:tabcloseカレントタブページを閉ぢる
:{count}tabc[lose][!] または
:tabc[lose][!] {count}

{count} 番目のタブページを閉ぢます。‘:tabclose‘ と同じ理由で失敗することがあります。

:-tabcloseカレントタブページの前のタブページを閉ぢる
:+tabcloseカレントタブページの次のタブページを閉ぢる
:1tabclose左端のタブページを閉ぢる
:$tabclose右端のタブページを閉ぢる
:tabclose -22 つ前のタブページを閉ぢる
:tabclose +次のタブページを閉ぢる
:tabclose 33 番目のタブページを閉ぢる
:tabclose $右端のタブページを閉ぢる
:tabo[nly][!]

カレントタブページ以外のすべてのタブページを閉ぢます。

オプション ’hidden’ がオンのとき、閉ぢたウィンドウのバッファはすべて隱しバッファになります。

hidden’ がオフ、’autowrite’ がオンのときは、變更のあるバッファはファイルに保存されます。さうでないときは、變更のあるバッファを表示してゐるウィンドウは閉ぢません。[!] を指定した場合は、變更のあるバッファは隱しバッファになります。變更のあるバッファは絕對に破毀されないので、變更を失ふことはありません。

:tabonlyカレントタブページ以外のすべてのタブページを閉ぢる
:{count}tabo[nly][!] または
:tabo[nly][!] {count}

{count} のタブページ以外のすべてのタブページを閉ぢます。

:.tabonly上に同じ
:-tabonlyカレントタブページの前のタブページ以外を全て閉ぢる
:+tabonlyカレントタブページの次のタブページ以外を全て閉ぢる
:1tabonly最初のタブページ以外を全て閉ぢる
:$tabonly最後のタブページ以外を全て閉ぢる
:tabonly -カレントタブページの前のタブページ以外を全て閉ぢる
:tabonly +2カレントタブページの2つ次のタブページ以外を全て閉ぢる
:tabonly 1最初のタブページ以外を全て閉ぢる
:tabonly $最後のタブページ以外を全て閉ぢる

タブページを切り替へるには:

タブページラインが表示されてゐるときは、タブページラベルをマウスでクリックすると、そのタブページに移動できます。ラベルが表示されてゐない場所をクリックすると、次のタブページに移動できます。|'tabline'|

:tabn[ext] または
<C-PageDown> または
gt

次のタブページに移動します。次のタブページがない場合は、最初のタブページに移動します。

:{count}tabn[ext] または
:tabn[ext] {count}

{count} 番目のタブページに移動します。最初のタブページの番號は 1 です。

:-tabnext前のタブページに移動する
:+tabnext次のタブページに移動する
:+2tabnext2 つ次のタブページに移動する
:1tabnext最初のタブページに移動する
:$tabnext最後のタブページに移動する
:tabnext $同上
:tabnext -前のタブページに移動する
:tabnext -1同上
:tabnext +次のタブページに移動する
:tabnext +1同上
{count}<C-PageDown> または
{count}gt

{count} 番目のタブページに移動します。最初のタブページの番號は 1 です。

:tabp[revious] または
:tabN[ext] または
<C-PageUp> または
gT

前のタブページに移動します。前のタブページがない場合は、最後のタブページに移動します。

:tabp[revious] {count} または
:tabN[ext] {count} または
{count}<C-PageUp> または
{count}gT

{count} の數だけ前のタブページに移動します。前のタブページがない場合は最後のタブページに移動します。

Note:
|:tabnext| とは {count} の使はれ方が異なつてゐて、そちらでは移動先のタブ番號として扱はれます。

:tabr[ewind] または
:tabfir[st]

最初のタブページに移動します。

:tabl[ast]

最後のタブページに移動します。

その他のコマンド:

:tabs

タブページと、含まれてゐるウィンドウの一覽を表示します。

例:

タブページ 1
  + tabpage.txt
    ex_docmd.c
タブページ 2
>   main.c

タブページを竝べ替へるには:

:tabm[ove] [N] または
:[N]tabm[ove]

カレントタブページを N 番目のタブページの後ろに移動します。カレントタブページを一番目のタブページにするにはゼロを指定します。N は移動する前にカウントされるので、もしも 2 番目のタブが現在のものであるなら、‘:tabmove 1‘ と ‘:tabmove 2‘ は效果がありません。 N を省略すると最後に移動します。

:.tabmove何もしない
:-tabmoveタブページを左に移動
:+tabmoveタブページを右に移動
:0tabmoveタブページを左端に移動
:tabmove 0同上
:tabmoveタブページを右端に移動
:$tabmove同上
:tabmove $同上
:tabm[ove] +[N] または
:tabm[ove] -[N]

カレントタブページを N 個右 (+ の場合) または左 (- の場合) に移動します。

:tabmove -タブページを左に移動
:tabmove -1同上
:tabmove +タブページを右に移動
:tabmove +1同上

Note:
:Ntabmove を使ふことでタブを N 番目のタブの後ろに移動することができることと、:+Ntabmove を使つて N 個後ろに移動できることに注意してください。この場合に +N が何を意味するかについては、|[range]| を參照してください。

タブページごとにコマンドを實行するには:

:[range]tabd[o] {cmd}

タブページごと、または [range] が與へられた場合はその範圍のタブページのみにコマンドを實行します。これは次のやうな動作をします:

:tabfirst
:{cmd}
:tabnext
:{cmd}
etc.

このコマンドは各タブページのカレントウィンドウで實行されます。いづれかのタブページでエラーが起きたときは、その場で實行を中斷します。

最後のタブページ (またはエラーが起きたタブページ) がカレントタブページになります。

{cmd} は ’|’ を使つて複數のコマンドを繋げることができます。{cmd} はタブページを開いたり閉ぢたり竝べ替へたりしてはいけません。

|:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|, |:lfdo| も參照してください。

3. その他

GUI のタブページラインにはポップアップメニューがあります。右クリックで次のメニューが表示されます:

Closeマウスポインタの下のタブページを閉ぢます。マウスがラベルの上にないときは、カレントタブページを閉ぢます。
New Tabタブページを新規バッファで開きます。マウスポインタの左側に作成されます。
Open Tab..."New Tab" と同じですが、ファイル選擇ダイアログを使つて選擇したファイルを新しいタブページで開きます。

差分モードはタブページ單位で機能します。1 つのタブページ內でファイル閒の差分を表示できます。そして、他のタブページでは他のファイルとの差分を表示することができます。

タブページローカル變數は "t:" で始まります。|tabpage-variable|

現在、タブページローカルなオプションは ’cmdheight’ だけです。

自動コマンドイベントの TabLeave と TabEnter を使つて、タブページを切り替へるときにコマンドを實行できます。イベントが起きる正確な順番は何をしたかによつて變はります。新しいタブページを作成したときは、例へば、編輯中のバッファを新しいウィンドウで開き、それからそのウィンドウで別のバッファを開いたときと同じやうな動きをします。つまり、":tabnew" では次の順番でイベントが實行されます:

WinLeaveカレントウィンドウから離れる
TabLeaveカレントタブページから離れる
WinEnter新しいタブページのウィンドウに入る
TabEnter新しいタブページに入る
BufLeaveカレントバッファから離れる
BufEnter新しい空のバッファに入る

タブページを切り替へたときは次の順番です:

BufLeave
WinLeave
TabLeave
TabEnter
WinEnter
BufEnter

4. ’tabline’ の設定

オプション ’tabline’ を設定してタブページラベルの表示方法を指定できます。これは CUI の タブページラインで使ひます。

オプション ’showtabline’ を設定してタブページラインを表示するかどうかを指定できます。表示しない、タブページが複數あるときだけ表示する、常に表示する、から選べます。

タブページラインの强調表示には TabLine, TabLineSel, TabLineFill が使はれます。|hl-TabLine| |hl-TabLineSel| |hl-TabLineFill|

變更されてゐるウィンドウを含むタブページには "+" が表示されます。タブページ內のウィンドウの個數も表示されます。よつて "3+" といふ表示は 3 個のウィンドウを含む、そのうちの 1 つが變更されてゐるバッファを含むといふことを意味します。

オプション ’tabline’ を使つて、タブページラベルを好みの表示に設定できます。これはあまり簡單ではないので、サンプルを用意してあります。

基本的には ’statusline’ を參照してください。同じアイテムが ’tabline’ で使用できます。加へて、|tabpagebuflist()|, |tabpagenr()|, |tabpagewinnr()| といふ函數も使へます。

タブページラベルの數は變化するので、オプションには式を使ふ必要があります。次のやうに設定します:

:set tabline=%!MyTabLine()

では、函數 MyTabLine() を定義して、すべてのタブページラベルを表示するやうにします。タブページラベル全體の作成と、個々のタブページラベルの作成、といふ 2 つの段階に分けると簡單です。

function MyTabLine()
  let s = ''
  for i in range(tabpagenr('$'))
    " 强調表示グループの選擇
    if i + 1 == tabpagenr()
      let s .= '%#TabLineSel#'
    else
      let s .= '%#TabLine#'
    endif

    " タブページ番號の設定 (マウスクリック用)
    let s .= '%' . (i + 1) . 'T'

    " ラベルは MyTabLabel() で作成する
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
  endfor

  " 最後のタブページの後は TabLineFill で埋め、タブページ番號をリセッ
  " トする
  let s .= '%#TabLineFill#%T'

  " カレントタブページを閉ぢるボタンのラベルを右添へで作成
  if tabpagenr('$') > 1
    let s .= '%=%#TabLine#%999Xclose'
  endif

  return s
endfunction

函數 MyTabLabel() は個々のタブページラベルを得るために呼ばれます。

function MyTabLabel(n)
  let buflist = tabpagebuflist(a:n)
  let winnr = tabpagewinnr(a:n)
  return bufname(buflist[winnr - 1])
endfunction

このサンプルは單純なものです。生成されるのは未設定時のタブページラインとほぼ同じですが、變更のあるバッファに + が付けたり、名前を切り詰めたりはしません。十分な表示領域がない場合など、なんらかのうまい方法でラベルの幅を減らしたいでせう。利用できる表示領域はオプション ’columns’ を確認してください。

5. ’guitablabel’ の設定

GUI のタブページラインが表示されてゐるとき、’guitablabel’ を設定してタブページラベルの表示方法を指定できます。’tabline’ とは違ひ、一度にタブページライン全體を指定するのではなく、個々のラベルを得るために ’guitablabel’ が使はれます。

guitabtooltip’ といふ良く似たオプションがあります。これはラベルのツールチップを表示するために使はれます。ツールチップはマウスポインタがラベルの上に乘つてゐるときだけ表示されるので、普通は、長い文字を表示します。いくつかのシステムだけサポートされてゐます。

書式についてはオプション ’statusline’ を參照してください。

"%N" はカレントタブページ番號になります。このオプションを評價するときに、|v:lnum| にも同じ番號が設定されます。ファイル名を參照するアイテムにはタブページのカレントウィンドウのものが使はれます。

Note:
このオプションでは强調表示は使へません。%T と %X は無視されます。

簡單な例として、次のものはタブページ番號とバッファ名をラベルに表示します:

:set guitablabel=%N\ %f

次の例は ’guitablabel’ の標準設定の動作と似た動作をします。タブページのウィンドウ數と、變更のあるバッファがあるときには ’+’ を表示します:

function GuiTabLabel()
  let label = ''
  let bufnrlist = tabpagebuflist(v:lnum)

  " このタブページに變更のあるバッファがるときには '+' を追加する
  for bufnr in bufnrlist
    if getbufvar(bufnr, "&modified")
      let label = '+'
      break
    endif
  endfor

  " ウィンドウが複數あるときにはその數を追加する
  let wincount = tabpagewinnr(v:lnum, '$')
  if wincount > 1
    let label .= wincount
  endif
  if label != ''
    let label .= ' '
  endif

  " バッファ名を追加する
  return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
endfunction

set guitablabel=%{GuiTabLabel()}

Note:
この函數はオプションを設定する前に定義しておく必要があります。さうしないと、函數未定義のエラーが表示されてしまひます。

標準のラベルを使ひたい場合は、空文字列を返してください。

あるタブページに固有の何かを表示したいときは、タブページローカル變數 |t:var| が便利です。


Up: 目次   [Index]