Up: 目次   [Index]


マルチウィンドウとマルチバッファのコマンド

*windows.txt*   For Vim バージョン 8.1.  Last change: 2019 Oct 27


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

マルチウィンドウ、マルチバッファを使つた編輯

ここではマルチウィンドウやマルチバッファを使用するために追加したコマンドについて說明する。さらに、2 つ以上のウィンドウを組合せて使用するときに異なる動作をするコマンドについての說明もする。

基本についてはユーザーマニュアルの 7 章と 8 章で說明されてゐる。|usr_07.txt| |usr_08.txt|。

1. はじめに|windows-intro|
2. Vim の起動|windows-starting|
3. ウィンドウのオープンとクローズ|opening-window|
4. ウィンドウ閒のカーソル移動|window-move-cursor|
5. ウィンドウの移動|window-moving|
6. ウィンドウのサイズ變更|window-resize|
7. コマンド引數とバッファリスト|buffer-list|
8. 全てのバッファ/ウィンドウに對してコマンド實行|list-repeat|
9. カーソル位置のタグ名/ファイル名|window-tag|
10.プレビューウィンドウ|preview-window|
11. 隱れ (hidden) バッファを使ふ|buffer-hidden|
12. 特殊なバッファ|special-buffers|

{|+windows| 機能なしでコンパイルされた場合は複數のウィンドウを使ふことはできません}

1. はじめに

要約:

ウィンドウはバッファの表示領域である。1 つのバッファに對して複數のウィンドウを開くことができるし、異なる複數のバッファに對して複數のウィンドウを開くこともできる。

バッファは編輯時にメモリ上にロードされたファイルのことを言ふ。オリジナルのファイルはバッファ內容をそのファイルに上書きするまで變更されずにゐる。

バッファは以下の 3 つの狀態のうちのどれか 1 つの狀態にある。

アクティブ:

バッファ內容はウィンドウに表示されてゐる。このバッファに對應するファイルが存在する場合、ファイルがバッファに讀み込まれてゐる。バッファはそれ以降編輯されてゐて、ファイルと異なつてゐるかもしれない。

隱れ(hidden):

バッファ內容はウィンドウに表示されてゐない。このバッファに對應するファイルが存在する場合、ファイルはバッファに讀み込まれてゐる。見ることができないが、それ以外はアクティブなバッファと同じ。

非アクティブ:

バッファ內容はウィンドウに表示されてゐない。バッファには何もロードされてゐない。ファイルが一度でもメモリにロードされてゐたなら、そのバッファのオプションは記憶されてゐる。|viminfo| ファイルによりマークを含んでゐるかもしれない。

狀態表:

狀態表示ウィンドウロードメモリ上に表示":buffers"
アクティブ’a’
隱れ(hidden)×’h’
非アクティブ××’ ’

Note:
ノーマルコマンドが利用できない、あるいは使ひ勝手が惡い狀況のために、全ての CTRL-W コマンドは |:wincmd| によつても實行できる。

Vim ではウィンドウを複數に分割することができる。タブページ |tab-page| といふものもあり、タブページは複數のウィンドウを保持することができる。 個々のウィンドウにはウィンドウ ID と呼ばれる一意な識別が與へられる。この識別子は Vim のセッション中は決して變はらない。|win_getid()| と |win_id2tabwin()| 函數は、ウィンドウ/タブ番號を識別子に變換するのに利用できる。似たやうなものとしてウィンドウ番號があるが、こちらはウィンドウを開いたり閉ぢたりするたびに變はる可能性がある。|winnr()| を參照。

ウィンドウ番號はある特定のタブ中でのみ正しい。ウィンドウ ID はタブを橫斷しても正しい。ウィンドウ ID やウィンドウ番號を取得するほとんどの函數では、ウィンドウ番號は、どのやうなタブ中にあつてもウィンドウへの參照が可能な閒、ウィンドウ ID を現在のタブにのみ適用する。

個々のバッファには一意な番號が割り振られてをり、Vim のセッション中は決して變はらない。バッファ名とバッファ番號を相互に變換するのには、|bufnr()| と |bufname()| 函數を使へる。

2. Vim の起動

デフォルトでは、Vim は Vi のやうに 1 つのウィンドウで起動する。

Vim のオプション引數に "-o" と "-O" を使ふと、引數で指定した各ファイルのウィンドウがオープンする。オプション "-o" はウィンドウを水平分割し、"-O" オプションはウィンドウを垂直分割する。"-o" と "-O" の兩方が與へられた場合は、後に現れた方が分割方向を決めるのに使はれる。例へば、これは 3 つのウィンドウが垂直分割して開かれる:

vim -o file1 file2 file3

"-oN" (N は 10 進數)の場合は、N 個のウィンドウが水平に分割して開く。ウィンドウの數 (N) より引數で指定したファイルの數が多い場合、N 個のウィンドウが開き、殘りのファイルはウィンドウに表示されない。逆にウィンドウの數より引數で指定したファイルの數が少ない場合、殘りのウィンドウは空のバッファを表示する。同樣に "-ON" はN個のウィンドウを垂直分割して開く。制限も同じである。

引數にたくさんのファイル名を指定した場合、ウィンドウは非常に小さくなる。もしかしたら、作業のできる環境にするために ’winheight’ または ’winwidth’ オプションを設定したくなるかもしれない。

Buf/Win Enter/Leave 時の自動コマンド |autocommand| は、新しいウィンドウを開いたりファイルを讀み込んだりしても實行されない。その自動コマンドはバッファ/ウィンドウへ入つた時にのみ實行される。

ステータス行はウィンドウの分割に使はれる。’laststatus’ オプションは一番下のウィンドウにステータス行を表示するかを設定する:

’laststatus’ = 0常にステータス行を表示しない。
’laststatus’ = 1ウィンドウが 2 つ以上ある場合に表示する。
’laststatus’ = 2常にステータス行を表示する。

ステータス行の內容は ’statusline’ オプションで變更できる。このオプションはウィンドウについてローカルにすることもでき、さうすると各ウィンドウごとに異なるステータスラインを表示することができる。

通常、ステータス行は反轉表示される。これは ’highlight’ オプションの ’s’ キャラクタで變更できる。例へば、"sb" は太文字に設定する。ステータス行にハイライトを使用しない場合("sn")、’^’ がカレントウィンドウに使はれ、’=’ が他のウィンドウに使はれる。マウスがサポートされてゐて ’mouse’ オプションでマウスが使用可能になつてゐる場合は、ステータス行をドラッグすることでウィンドウのリサイズを行へる。

Note:
ステータス行が反轉表示されるはずが反轉表示されなければ、’highlight’ オプションに ’si’ が含まれてゐるか確認すること。version 3.0 では、’si’ がステータス行の反轉表示を意味してゐた。今は反轉表示には ’sr’ を使用し、’si’ はイタリック表示を意味してゐる!イタリックを表示できない端末では、ステータス行は反轉表示となる。イタリック表示のための termcap コードがある場合にのみ、この問題が見られる。

3. ウィンドウのオープンとクローズ

CTRL-W s または
CTRL-W S または
CTRL-W CTRL-S または
:[N]sp[lit] [++opt] [+cmd] [file]

カレントウィンドウを2つに分割する。その結果、2 つの表示領域に同じファイルが表示されるやうになる。

新しいウィンドウの高さは N になる(デフォルトの高さはカレントウィンドウの高さの半分)。新しいウィンドウの場所を確保するため、カレントウィンドウの高さは低くなる (’equalalways’ オプションがセットされてゐて、かつ ’eadirection’ の値が "hor" でない場合、他のウィンドウの中でカレントウィンドウか新しいウィンドウより大きいものがあれば、そのウィンドウも小さくなる)。

[file] が與へられてゐる場合は新しいウィンドウで編輯される。どのバッファでもロードされてゐない場合、讀み込まれる。さうでなれければ新しいウィンドウは既にロードされたバッファを使用する。

Note:
CTRL-S は端末によつては使用できない。また、それ以上の入力をブロックしてしまふかもしれない。續けるためには CTRL-Q を使ふこと。

|++opt| と |+cmd| も參照のこと。

自動コマンドでウィンドウを分割するときは注意してください。他のウィンドウレイアウトを變更してゐるときにウィンドウレイアウトが混亂する場合があります。

CTRL-W CTRL-V または
CTRL-W v または
:[N]vs[plit] [++opt] [+cmd] [file]

|:split| と同樣、ただし垂直分割する。次のすべてに當てはまる場合、ウィンドウは水平に廣げられる:

  1. 幅が指定されてゐない。
  2. equalalways’ がセットされてゐる。
  3. eadirection’ が "ver" でない。
  4. 他のウィンドウの中でカレントウィンドウか新しいウィンドウより幅が廣いものがある。

Note:
他の局面では CTRL-QCTRL-V と同じだが、ここではさうでない。

CTRL-W n または
CTRL-W CTRL_N または
:[N]new [++opt] [+cmd]

新しいウィンドウを作成して空のファイルの編輯が始まる。新しいウィンドウの高さは N になる(デフォルトの高さはカレントウィンドウの高さの半分)。新しいウィンドウの場所を確保するため、カレントウィンドウの高さは低くなる。(’equalalways’ オプションがセットされてゐてかつ ’equalalways’ オプションが "hor" でない場合、他のウィンドウの高さも低くなる)。

|++opt| と |+cmd| も參照のこと。 ’fileformats’ オプションが空でない場合は、與へられた最初のフォーマットが新しいバッファにも使用される。’fileformats’ オプションが空の場合は、カレントバッファの ’fileformat’ が使用される。これは引數 |++opt| によつて上書きされうる。

自動コマンドはこの順で實行される:

  1. カレントウィンドウに對する WinLeave
  2. 新しいウィンドウに對する WinEnter
  3. カレントバッファに對する BufLeave
  4. 新しいバッファに對する BufEnter

この動作は、はじめに ":split"、次に ":enew" コマンドを實行した場合と同じ動作である。

:[N]vne[w] [++opt] [+cmd] [file]

|:new| と同樣だが、垂直分割する。’equalalways’ がセットされ、’eadirection’ が "ver" でないならば、幅が指定されない限りウィンドウは水平に廣げられる。

:[N]new [++opt] [+cmd] {file} または
:[N]sp[lit] [++opt] [+cmd] {file}

新しいウィンドウを作成し、そのウィンドウでファイル {file} の編輯が始まる。この動作は、はじめに ":split"、次に ":e" コマンドを實行した場合と同じ動作である。

[+cmd] が指定された場合は、ファイルをロードしコマンドを實行する |+cmd|。

|++opt| も參照のこと。

新しいウィンドウの高さは N になる (デフォルトの高さはカレントウィンドウの高さの半分)。新しいウィンドウの場所を確保するため、カレントウィンドウの高さは低くなる。(’equalalways’ オプションがセットされてゐれば他のウィンドウも低くなる)

:[N]sv[iew] [++opt] [+cmd] {file}

":split" と同じ。ただし、バッファに對して ’readonly’ オプションがセットされる。

:[N]sf[ind] [++opt] [+cmd] {file}

":split" と同じ。ただし、|:find| と同樣に ’path’ から {file} を檢索する。{file} が見つからなければ、ウィンドウは分割されない。

CTRL-W CTRL-^ または
CTRL-W ^

ウィンドウを 2 つに分割してもう一方のファイルを編輯する。N が與へられると、バッファ N を編輯する。":sp #" や ":sp #N" と似てゐるが、他のバッファが無名であることを許す。このコマンドは、ウィンドウを最初に分割すること以外は |CTRL-^| の擧動と匹敵する。

CTRL-W :

コマンドライン |:| を入力するのと同じ。ターミナルウィンドウ中で便利。ここではすべての Vim コマンドは CTRL-W か ’termwinkey’ が前置きされなければならない。

Note:
オプション ’splitbelow’ と ’splitright’ が新しいウィンドウが現れる場所に影響を及ぼすことに注意。

:vert[ical] {cmd}

{cmd} を實行する。{cmd} がウィンドウを分割させるコマンドを含んでゐれば、垂直分割させる。

cmd として |:execute| または |:normal| を指定しても效果がない。

:lefta[bove] {cmd} または
:abo[veleft] {cmd}

{cmd} を實行する。{cmd} がウィンドウを分割させるコマンドを含んでゐる場合は、垂直分割ならば左側に、水平分割ならば上側にカレントウィンドウを出現させる。’splitbelow’ と ’splitright’ を無視する。

cmd として |:execute| または |:normal| を指定しても效果がない。

:rightb[elow] {cmd} または
:bel[owright] {cmd}

{cmd} を實行する。{cmd} がウィンドウを分割させるコマンドを含んでゐる場合は、垂直分割ならば右側に、水平分割ならば下側にカレントウィンドウを出現させる。’splitbelow’ と ’splitright’ を無視する。

cmd として |:execute| または |:normal| を指定しても效果がない。

:to[pleft] {cmd}

{cmd} を實行する。{cmd} がウィンドウを分割させるコマンドを含んでゐる場合は、最上段に現れ、Vim のウィンドウの中で幅を最大にする。垂直分割のときはウィンドウは最も左側に現れ、Vim ウィンドウの中で高さを最大にする。

cmd として |:execute| または |:normal| を指定しても效果がない。

:bo[tright] {cmd}

{cmd} を實行する。{cmd} がウィンドウを分割させるコマンドを含んでゐる場合は、最下段に現れ、Vim のウィンドウの中で幅を最大にする。垂直分割のときはウィンドウは最も右側に現れ、Vim ウィンドウの中で高さを最大にする。

cmd として |:execute| または |:normal| を指定しても效果がない。

これらのコマンドモディファイヤを組み合はせて、最大高さの垂直分割したウィンドウを作ることができる。例:

:vertical topleft split tags

ウィンドウを垂直分割し、"tags" ファイルのウィンドウを最大の高さで最も左に開く。

ウィンドウを閉ぢる

:q[uit] または
:{count}q[uit] または
CTRL-W q または
CTRL-W CTRL-Q

{count} なしの場合、カレントウィンドウを終了する。もし {count} が與へられた場合、{count} ウィンドウを終了する。

最後のウィンドウ(ヘルプウィンドウを除く)を終了すると Vim が終了する。

hidden’ オプションがセットされてゐて、かつカレントバッファを表示してゐるウィンドウが 1 つしかない場合は、そのバッファは隱れ狀態 (hidden) となる。’hidden’ オプションがセットされてゐなくて、カレントバッファを表示してゐるウィンドウが 1 つしかなくて、かつ、そのバッファが編輯中の場合は、このコマンドは失敗する。

Note:
CTRL-Q は全ての端末で動作するわけではない。

もし [count] が最後のウィンドウ番號よりも大きいときは、最後のウィンドウが閉ぢられます:

:1quit  "最初のウィンドウを終了
:$quit  "最後のウィンドウを終了
:9quit  "もし 9 個より少ないウィンドウが開かれてゐれば最後のウィンドウを終了
:-quit  "前のウィンドウを終了
:+quit  "次のウィンドウを終了
:+2quit "2 個先のウィンドウを終了

ヘルプウィンドウを閉ぢると、Vim は以前のウィンドウレイアウトを復元しようとします |:helpclose|。

:q[uit]! または
:{count}q[uit]!

{count} なしの場合、カレントウィンドウを終了する。もし {count} が與へられた場合、{count} ウィンドウを終了する。

このウィンドウがバッファを表示してゐる最後のウィンドウの場合、このバッファに對する變更は全て失はれる。最後のウィンドウ (ヘルプウィンドウを除く) を終了すると Vim が終了する。たとへ ’hidden’ オプションがセットされてゐたとしても、バッファ內容は失はれる。

:clo[se][!] または
:{count}clo[se][!] または
CTRL-W c

{count} なしの場合、カレントウィンドウを閉ぢる。もし {count} が與へられた場合、{count} ウィンドウを閉ぢる。

hidden’ オプションがセットされてゐる時、または、バッファが變更されてゐて [!] を使用した時は、(バッファが他のウィンドウで編輯中でなければ) バッファは隱れ狀態 (hidden) になる。

カレントタブページにウィンドウが 1 つしかなく、他にタブページがあるとき、このコマンドを實行するとカレントタブページが閉ぢる。|tab-page|

このコマンドは以下の場合に失敗する:

バッファへの變更は保存されず、失はれることもないため、このコマンドは「安全な」コマンドである。

CTRL-W CTRL-C

CTRL-W CTRL-C はカレントウィンドウを閉ぢると期待するかもしれないが、CTRL-C はコマンドをキャンセルするために期待通りには動作しない。

:hid[e] または
:{count}hid[e]

{count} が無いと: スクリーンの最後のウィンドウでないかぎり、カレントウィンドウを終了する。もしも {count} が與へられてゐるのなら、{count} 番目の ウィンドウを終了する。

(他のウィンドウがバッファを編輯してゐなく、かつ ’bufhidden’ の値が "unload", "delete", "wipe" のいづれでもないならば) そのバッファは隱れ狀態 (hidden) となる。そのウィンドウがカレントタブページで最後のウィンドウであるならばタブページも閉ぢる。|tab-page|

hidden’ の値はこのコマンドには無關係である。バッファへの變更は保存されず、失はれることもないため、このコマンドは「安全な」コマンドである。

:hid[e] {cmd}

{cmd} を實行し、同時に ’hidden’ をセットする。{cmd} が實行された後に ’hidden’ の以前の値が復舊される。

例:

:hide edit Makefile

これはカレントバッファに變更があつても、それを隱しバッファにし、"Makefile" を編輯する。

:on[ly][!] または
:{count}on[ly][!] または
CTRL-W o または
CTRL-W CTRL-O

カレントウィンドウをスクリーン上にある唯一のウィンドウにする。他の全てのウィンドウは閉ぢられる。{count} については |:quit| コマンドを參照。

hidden’ オプションがセットされてゐれば、閉ぢられた全てのバッファは隱れ狀態 (hidden) となる。

hidden’ オプションがセットされてをらず、’autowrite’ オプションがセットされてゐる場合は、編輯中のバッファは保存される。さもなければ、編輯中のバッファを表示してゐるウィンドウは閉ぢられることはない。ただし [!] が與へられてゐれば、それらのバッファは隱れ狀態 (hidden) となる。しかし、編輯中のバッファは決して削除されないので、變更は失はれない。

4. ウィンドウ閒のカーソル移動

CTRL-W <Down> または
CTRL-W CTRL-J または
CTRL-W j

カーソルをカレントウィンドウの N 個下のウィンドウに移動。候補が複數ある場合は、現在のカーソル位置によつて選擇される。

CTRL-W <Up> または
CTRL-W CTRL-K または
CTRL-W k

カーソルをカレントウィンドウの N 個上のウィンドウに移動。候補が複數ある場合は、現在のカーソル位置によつて選擇される。

CTRL-W <Left> または
CTRL-W CTRL-H または
CTRL-W <BS> または
CTRL-W h

カーソルをカレントウィンドウの N 個左のウィンドウに移動。候補が複數ある場合は、現在のカーソル位置によつて選擇される。

CTRL-W <Right> または
CTRL-W CTRL-L または
CTRL-W l

カーソルをカレントウィンドウの N 個右のウィンドウに移動。候補が複數ある場合は、現在のカーソル位置によつて選擇される。

CTRL-W w または
CTRL-W CTRL-W

カウント指定なし: カーソルをカレントウィンドウの下/右のウィンドウに移動。下/右にウィンドウがなければ、一番上/左のウィンドウに移動。

カウント指定有り: N 番目のウィンドウに移動 (ウィンドウは左上から右下へと番號が振られる)。ウィンドウの番號を知るには |bufwinnr()| と |winnr()| を參照。N がウィンドウの個數より大きい場合、最後のウィンドウへ移動する。

CTRL-W W

カウント指定なし: カーソルをカレントウィンドウの上/左のウィンドウに移動。上/左にウィンドウがなければ、一番下/右のウィンドウに移動。

カウント指定有り: N 番目のウィンドウに移動 (CTRL-W w と同樣)。

CTRL-W t または
CTRL-W CTRL-T

カーソルを一番左上のウィンドウに移動。

CTRL-W b または
CTRL-W CTRL-B

カーソルを一番右下のウィンドウに移動。

CTRL-W p または
CTRL-W CTRL-P

カーソルを直前の (最後にアクセスしていた) ウィンドウに移動。

CTRL-W P

プレビューウィンドウに移動。プレビューウィンドウがない場合にはエラーになる。

{|+quickfix| 機能なしでコンパイルされた場合には使用できない}

ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッファを表示してゐない場合、ビジュアルモードは終了する。ウィンドウが同じバッファを表示してゐる場合、カーソル位置は選擇領域が保たれるやうにセットされる。

以上のコマンドは ":wincmd" によつても實行することができる:

:[count]winc[md] {arg}

CTRL-W [count] {arg} を實行するのと同じ。例:

:wincmd j

下のウィンドウに移動する。

このコマンドは (|CursorHold| 自動コマンドイベントのため) ノーマルモードが利用できないときやノーマルコマンドが不便なときに有效である。

count はウィンドウ番號であつてもよい。例:

:exe nr . "wincmd w"

これは "nr" 番のウィンドウへ移動する。

5. ウィンドウの移動

CTRL-W r または
CTRL-W CTRL-R

ウィンドウ位置を下/右へ廻轉させる。1 番のウィンドウは 2 番目に、2 番目のウィンドウは 3 番目になる。最後のウィンドウは 1 番になる。カーソルは同じウィンドウにとどまる。

この移動はカレントウィンドウと同じ段/列の中だけで行はれる。

CTRL-W R

ウィンドウ位置を上/左へ廻轉させる。1 番のウィンドウは2番目に、2 番目のウィンドウは 3 番目になる。最後のウィンドウは 1 番になる。カーソルは同じウィンドウにとどまる。

この移動はカレントウィンドウと同じ段/列の中だけで行はれる。

CTRL-W x または
CTRL-W CTRL-X

カウント指定なし: カレントウィンドウと次 (1 つ下) のウィンドウを入れ替へる。次のウィンドウがない (カレントウィンドウが一番下の) 場合は、前 (1 つ上) のウィンドウと入れ替へる。

カウント指定有り: カレントウィンドウと上から N 番目のウィンドウ (一番上は 1 番目)を入れ替へる。カーソルは入れ替へた相手のウィンドウに移動する。

水平分割と垂直分割が混ざつてゐる場合には、カレントウィンドウと同じ段/列の中だけで入れ替へが行はれる。

以下のコマンドはウィンドウのレイアウトを變更するために使へる。例へば、2 つの垂直分割されたウィンドウがある場合、CTRL-W K はそれらを水平分割に變更する。CTRL-W H はその逆を行ふ。

CTRL-W K

カレントウィンドウを最上段に移動し、幅を最大にする。これは、カレントウィンドウを閉ぢ、それから ":topleft split" で別のウィンドウを作るのと同樣で、違ひは新しいウィンドウにカレントウィンドウの內容が表示されるといふことだけである。

CTRL-W J

カレントウィンドウを最下段に移動し、幅を最大にする。これは、カレントウィンドウを閉ぢ、それから ":botright split" で別のウィンドウを作るのと同樣で、違ひは新しいウィンドウにカレントウィンドウの內容が表示されるといふことだけである。

CTRL-W H

カレントウィンドウを最左列に移動し、高さを最大にする。これは、カレントウィンドウを閉ぢ、それから ":vert topleft split" で別のウィンドウを作るのと同樣で、違ひは新しいウィンドウにカレントウィンドウの中身が使はれるといふことだけである。

CTRL-W L

カレントウィンドウを最右列に移動し、高さを最大にする。これは、カレントウィンドウを閉ぢ、それから ":vert botright split" で別のウィンドウを作るのと同樣で、違ひは新しいウィンドウにカレントウィンドウの中身が使はれるといふことだけである。

CTRL-W T

カレントウィンドウを新しいタブページへ移動する。カレントタブページにウィンドウが1つしかないときは、このコマンドは失敗する。

カウントが指定されると、その番號のタブページの前に新しいタブページが開く。指定されないときはカレントタブページの後ろに開く。

6. ウィンドウのサイズ變更

CTRL-W =

全てのウィンドウの高さ・幅を (ほとんど) 同じにする。ただしカレントウィンドウに對しては ’winheight’ と ’winwidth’ が適用される。’winfixheight’ がセットされたウィンドウの高さはそのままにし、’winfixwidth’ がセットされたウィンドウの幅はそのままにする。

:res[ize] -N または
CTRL-W -

カレントウィンドウの高さを N (デフォルトは 1) 行分低くする。|:vertical| の後に置かれたときは、幅を N 桁分減らす。

:res[ize] +N または
CTRL-W +

カレントウィンドウの高さを N (デフォルトは1 ) 行分高くする。|:vertical| の後に置かれたときは、幅を N 桁分增やす。

:res[ize] [N] または
CTRL-W CTRL-_ または
CTRL-W _

カレントウィンドウの高さを N 行にする (デフォルト: 可能な限り高くする)

:{winnr}res[ize] [+-]N

上記の ‘:resize‘ と似てゐますが、カレントウィンドウではなくウィンドウ {winnr} にサイズを適用します。

z{nr}<CR>

カレントウィンドウの高さを {nr} にする。

CTRL-W <

カレントウィンドウの幅を N (デフォルトは 1) 桁分減らす。

CTRL-W >

カレントウィンドウの幅を N (デフォルトは 1) 桁分增やす。

:vertical res[ize] [N] または
CTRL-W |

カレントウィンドウの幅を N 桁にする (デフォルト:可能な限り廣くする)

マウスでステータス行を上下にドラッグすることによつてもウィンドウのサイズを變更できる。垂直セパレータ行を左右にドラッグしても同樣。これができるのは、使用してゐる Vim がマウスをサポートしてゐて ’mouse’ オプションでマウスが使へるやうに設定されてゐるときである。

winheight’ (’wh’) オプションはカレントウィンドウの最小の高さを設定する。このオプションは他のウィンドウがカレントウィンドウになるたびに使用される。このオプションが ’0’ に設定されてゐる場合、オプションが無效になる。’winheight’ オプションをかなり大きい値、例へば ’9999’ に設定すると、カレントウィンドウの高さは常に可能な限り高くなる。このオプションを適當な値、例へば ’10’ に設定した場合、カレントウィンドウでの編輯がやりやすくなる。

同樣のオプション ’winwidth’ (’wiw’) がカレントウィンドウの最小幅を設定するのに使へる。

equalalways’ (’ea’) オプションをセットした場合、ウィンドウを分割したり閉ぢたりした後は全てのウィンドウは自動的に同じ高さとなる。このオプションをセットしてゐない場合、ウィンドウを分割するとカレントウィンドウが低くなり他のウィンドウの高さは變化しない。ウィンドウを閉ぢると、閉ぢたウィンドウの上のウィンドウの下のウィンドウが高くなる。

オプション ’eadirection’ は ’equalalways’ がどの方向に適用されるかを制限する。デフォルトの "both" は兩方の方向にリサイズする。その値が "ver" のときはウィンドウの高さだけが等しくされる。垂直分割したウィンドウを手動でリサイズし、この幅を保ちたいときにこれを使ふとよい。同じやうに、値が "hor" のときはウィンドウの幅だけが等しくされる。

cmdheight’ (’ch’) オプションはコマンド行の高さを設定する。長いメッセージの表示の際の |hit-enter| プロンプトをわづらはしいと感じたら、このオプションを 2 か 3 に設定すること。

ウィンドウが 1 つしかない場合、ウィンドウの高さを變更するとコマンド行の高さも變化する。2 つ以上ウィンドウがある場合、カレントウィンドウの高さを變更するとその下のウィンドウの高さも變化する(たまに上のウィンドウの高さが變化することもある)。

ウィンドウの最小の高さと幅は ’winminheight’ と ’winminwidth’ によつて設定される。これらは絕對的な値で、ウィンドウはこれらより小さくなることはない。

7. コマンド引數とバッファリスト

args listbuffer listmeaning
1. :[N]argument [N]11. :[N]buffer [N]N 番目の引數/バッファに移動
2. :[N]next [file ..]12. :[N]bnext [N]N 個先の引數/バッファに移動
3. :[N]Next [N]13. :[N]bNext [N]N 個前の引數/バッファに移動
4. :[N]previous [N]14. :[N]bprevious [N]N 個前の引數/バッファに移動
5. :rewind / :first15. :brewind / :bfirst最初の引數/バッファに移動
6. :last16. :blast最後の引數/バッファに移動
7. :all17. :ball全ての引數/バッファを編輯
18. :unhide全ての讀み込まれたバッファを編輯
19. :[N]bmod [N]N 個先の編輯中のバッファに移動
split & args listsplit & buffer listmeaning
21. :[N]sargument [N]31. :[N]sbuffer [N]split + N番目の引數/バッファに移動
22. :[N]snext [file ..]32. :[N]sbnext [N]split + N個先の引數/バッファに移動
23. :[N]sNext [N]33. :[N]sbNext [N]split + N個前の引數/バッファに移動
24. :[N]sprevious [N]34. :[N]sbprevious [N]split + N個前の引數/バッファに移動
25. :srewind / :sfirst35. :sbrewind / :sbfirstsplit + 最初の引數/バッファに移動
26. :slast36. :sblastsplit + 最後の引數/バッファに移動
27. :sall37: :sball全ての引數/バッファを編輯
38. :sunhide全ての讀み込まれたバッファを編輯
39. :[N]sbmod [N]split + N 個先の編輯中のバッファに移動
40. :argsコマンド引數の表示
41. :buffersバッファの表示

[N] の意味はコマンドによつて異なる。

2/12/22/32, 3/13/23/33, 4/14/24/34 のコマンドにおいては、[N] は前方/後方に移動するバッファ數
1, 21 のコマンドにおいては、[N] は引數番號、デフォルトはカレント引數
11, 31 のコマンドにおいては、[N] はバッファ番號、デフォルトはカレントバッファ
19, 39 のコマンドにおいては、[N] はカウント

Note:
":next" は例外である。なぜならこのコマンドは Vi との互換性のためにファイル名リストを受け付けなければならないからである。

引數リストと複數のウィンドウ

引數リストのカレント位置は各ウィンドウ每に異なつてゐる可能性がある。":e file" コマンドを實行した際には引數リストないのカレント位置は變化しないが、カレント位置のファイルを編輯してゐないことを忘れないでほしい。この狀態を示すために、ファイルメッセージに(もしあるならタイトルにも)「(file (N) of M)」と表示する。ここで、"(N)" はファイルリスト中のカレント位置を、"M" はファイルリスト中のファイルの數を表してゐる。

引數リストの全てはバッファリストに追加される。だから、":bnext" のやうなバッファリストコマンドで引數リストを表示することができる。

:[N]al[l][!] [N] または
:[N]sal[l][!] [N]

各引數に對して 1 つのウィンドウを開き、スクリーンを再構成する。他の全てのウィンドウは閉ぢられる。カウントが指定された時は、開くウィンドウの最大數となる。コマンド修飾子 |:tab| をつけて實行すると、各引數に對して 1 つずつタブページを開く。’tabpagemax’ 個より多くの引數が與へられたときは、多すぎる引數は最後のタブページの中でウィンドウに分割されて開かれる。 ’hidden’ オプションがセットされてゐる場合は、閉ぢられるウィンドウで表示されてゐる全てのバッファは隱れ狀態 (hidden) となる。’hidden’ オプションがセットされてをらず ’autowrite’ オプションがセットされてゐる場合は、編輯中のバッファは保存される。さもなければ、編輯中のバッファを表示してゐるウィンドウは閉ぢられない。ただし [!] が與へられてゐれば、それらのバッファは隱れ狀態 (hidden) となる。しかし、編輯中のバッファは決して削除されないので、變更は失はれない。 [N] は開かれるウィンドウの數の最大値。’winheight’ (|:vertical| が前に與へられてゐる場合は ’winwidth’) もまた開かれるウィンドウの數を制限します。

この時點では Buf/Win Enter/Leave 自動コマンドは新しいウィンドウに對して實行されません。實際にそのウィンドウに移つたときに實行されます。 このコマンドを使用中に自動コマンドがウィンドウレイアウトを變更すると、エラーが發生します。

:[N]sa[rgument][!] [++opt] [+cmd] [N]

":split | argument [N]" の短縮形: ウィンドウを分割し、N 番目の引數へ移動する。しかし、N 番目の引數がなければ、ウィンドウは分割しない。|++opt| と |+cmd| も參照。

:[N]sn[ext][!] [++opt] [+cmd] [file ..]

":split | [N]next" の短縮形: ウィンドウを分割し、N 個先の引數へ移動する。しかし、N 個先の引數がなければ、ウィンドウは分割しない。|++opt| と |+cmd| も參照。

:[N]spr[evious][!] [++opt] [+cmd] [N] または
:[N]sN[ext][!] [++opt] [+cmd] [N]

":split | [N]Next" の短縮形: ウィンドウを分割し、N 個前の引數へ移動する。しかし、N 個前の引數がなければ、ウィンドウは分割しない。|++opt| と |+cmd| も參照。

:sre[wind][!] [++opt] [+cmd]

":split | rewind" の短縮形: ウィンドウを分割し、最初の引數へ移動する。しかし、引數がなければ、ウィンドウは分割しない。|++opt| と |+cmd| も參照。

:sfir[st] [++opt] [+cmd]

":srewind" と同じ。

:sla[st][!] [++opt] [+cmd]

":split | last" の短縮形: ウィンドウを分割し、最後の引數へ移動する。しかし、引數がなければ、ウィンドウは分割しない。|++opt| と |+cmd| も參照。

:dr[op] [++opt] [+cmd] {file} ..

最初の {file} を編輯する。

|:next| コマンドと同樣に、|argument-list| がセットされる。このコマンドの目的は、Vim に別のファイルを開いてほしいプログラム (例:デバッガ) から使はれることである。コマンド修飾子 |:tab| をつけて實行すると、各引數が 1 つずつタブページで開かれる。最後のウィンドウが空ならそのウィンドウが使はれる。|++opt| と |+cmd| も參照。

8. 全てのバッファ/ウィンドウに對してコマンド實行

:[range]windo {cmd}

各ウィンドウに對して {cmd} を實行する。[range] が指定された場合には、指定された範圍の番號のウィンドウが操作對象となる。これは次のやうにするのと同じ動作をする:

CTRL-W t
:{cmd}
CTRL-W w
:{cmd}
etc.

カレントタブページ內でのみ實行される。1 つのウィンドウに對してエラーが檢出されると、それ以降のウィンドウに對しては實行されない。最後のウィンドウ (またはエラーが起こつたウィンドウ) がカレントウィンドウになる。

{cmd} は ’|’ を含んで複數のコマンドを連結してゐてもよい。{cmd} はウィンドウの開閉、竝べ替へをしてはならない。

|:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|, |:lfdo| も參照。

:[range]bufdo[!] {cmd}

{cmd} をバッファリスト內の各バッファに對して實行する。[range] が指定された場合は、指定された範圍の番號のバッファが操作對象となる。これは次のやうにするのと同じ動作をする:

:bfirst
:{cmd}
:bnext
:{cmd}
etc.

カレントファイルが破毀されえなく (|abandon|) かつ [!] が與へられない場合、このコマンドは失敗する。1 つのバッファに對してエラーが檢出されると、それ以降のバッファに對しては實行されない。リストされてゐないバッファはスキップされる。最後のバッファ (またはエラーが起こつたバッファ) がカレントウィンドウになる。

{cmd} は ’|’ を含んで複數のコマンドを連結してゐてもよい。{cmd} はバッファリストにバッファを削除、追加してはならない。

Note:
このコマンドを實行してゐる閒、Syntax 自動コマンドイベントが ’eventignore’ に追加され、無效化される。これは各バッファの編輯を大幅にスピードアップさせる。

|:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, |:cfdo|, |:lfdo| も參照。

例:

:windo set nolist nofoldcolumn | normal zn

これは ’list’ オプションをリセットし全てのウィンドウの折り疊みを無效化する。

:bufdo set fileencoding= | update

これは各バッファの ’fileencoding’ をリセットし、バッファに變更があつたらそれを保存する。結果として、すべてのバッファが同じ ’encoding’ のエンコーディングを使用する (變換がうまくいつたとすれば)。

9. カーソル位置のタグ名/ファイル名

:sta[g][!] [tagname]

":tag[!] [tagname]" を實行し見つかつたタグの表示のためにウィンドウを分割する。|:tag| を參照。

CTRL-W ] または
CTRL-W CTRL-]

カレントウィンドウを2つに分割する。カーソル位置の識別子をタグとして使用し、新しくできた上側のウィンドウでタグに移動する。ビジュアルモードではビジュアル選擇されたテキストがタグとして使はれる。新しいウィンドウの高さは N となる。

CTRL-W g ]

カレントウィンドウを 2 つに分割する。カーソル位置の識別子をタグとして使用し、新しくできた上側のウィンドウで ":tselect" を實行する。ビジュアルモードではビジュアル選擇されたテキストがタグとして使はれる。新しいウィンドウの高さは N となる。

CTRL-W g CTRL-]

カレントウィンドウを 2 つに分割する。カーソル位置の識別子をタグとして使用し、新しくできた上側のウィンドウで ":tjump" を實行する。ビジュアルモードではビジュアル選擇されたテキストがタグとして使はれる。新しいウィンドウの高さは N となる。

CTRL-W f または
CTRL-W CTRL-F

カレントウィンドウを 2 つに分割する。カーソル位置のファイル名を編輯する。":split ]f" と同樣だが、ファイルが存在しなければウィンドウを分割しない。

ファイルを探すディレクトリのリストとして變數 ’path’ が使はれる。また、カレントファイルのパスも探される。その名前が "type://machine/path" のやうにハイパーテキストリンクならば "/path" のみが使はれる。

count が與へられた場合、count 番目にマッチしたファイルが編輯される。

{|+file_in_path| 機能なしでコンパイルされた場合は使用できない}

CTRL-W F

カレントウィンドウを 2 つに分割する。カーソル下のファイル名を開き、そのファイル名の後に書かれてゐる行番號へジャンプする。どのやうに行番號を取得するかについては |gF| を參照。

{|+file_in_path| 機能なしでコンパイルされた場合は使用できない}

CTRL-W gf

新しいタブページを開き、カーソル下のファイル名を開く。"tab split" と "gf" の組み合はせに似てゐるが、そのファイルが存在しない場合に新しいタブページを作成しないところが異なる。

{|+file_in_path| 機能なしでコンパイルされた場合は使用できない}

CTRL-W gF

新しいタブページを開き、カーソル下のファイル名を開いて、ファイル名の後に書かれてゐる行番號へジャンプする。"tab split" と "gF" の組み合はせに似てゐるが、そのファイルが存在しない場合に新しいタブページを作成しないところが異なる。

{|+file_in_path| 機能なしでコンパイルされた場合は使用できない}

CTRL-W gt

次のタブページに移動。‘gt‘ と同じ。

CTRL-W gT

前のタブページに移動。‘gT‘ と同じ。

|CTRL-W_CTRL-I| も參照: カーソル位置のキーワードを含むインクルードファイルを新しいウィンドウで開く。

10. プレビューウィンドウ

プレビューウィンドウは別のファイルをプレビューする特別なウィンドウである。通常はインクルードファイルや函數の定義を示すのに使はれる小さなウィンドウである。

{|+quickfix| 機能なしでコンパイルされた場合は使用できない}

プレビューウィンドウはタブページにつき1つだけ開くことができる。プレビューウィンドウは以下のコマンドのどれかが實行されたとき作成される。オプション ’previewheight’ によつてプレビューウィンドウが開くときの高さを設定できる。プレビューウィンドウを識別するために、プレビューウィンドウにはオプション ’previewwindow’ がセットされる。他のウィンドウを開閉したときにも同じ高さを保つためにオプション ’winfixheight’ がセットされる。 ポップアップウィンドウは ’previewpopup’ オプションを設定することによつても使用することができます。これを設定すると ’previewwindow’ と ’previewheight’ の設定は無效になります。オプションは次の値のコンマ區切りリストです:

heightポップアップの最大高
widthポップアップの最大幅
highlightポップアップのハイライトグループ (デフォルトは Pmenu)

例:

:set previewpopup=height:10,width:60

いくつかの特徵:

:pta[g][!] [tagname]

":tag[!] [tagname]" を實行し、現在のバッファまたはカーソル位置を變へずに「プレビュー」ウィンドウ內で檢索したタグを表示する。「プレビュー」ウィンドウがすでに存在してゐた場合は、(ヘルプウィンドウのやうに) そのウィンドウに表示する。新しいウィンドウが開いたときは、’previewheight’ の設定がそのウィンドウの高さになる。|:tag| も參照のこと。

例は下を參照。|CursorHold-example|

|:tag| とは小さな違ひがある: [tagname] がすでに表示されてゐるタグと同じ場合、マッチしたタグリスト內の位置はリセットされない。このおかげで |:ptnext| の後でも CursorHold の例がうまくいくやうになつてゐる。

CTRL-W z または
CTRL-W CTRL-Z または
:pc[lose][!]

現在開いてゐる「プレビュー」ウィンドウを閉ぢる。’hidden’ オプションがセットされてゐる時、または、バッファが編輯中で [!] が使はれた時、(そのバッファを編輯してゐる他のウィンドウがなければ)そのバッファは隱れ狀態 (hidden) となる。いづれかの「プレビュー」バッファを閉ぢることができない場合、このコマンドは失敗する。|:close| も參照のこと。

:[count]pp[op][!]

プレビューウィンドウで ":[count]pop[!]" を實行する。|:pop| と |:ptag| を參照。

CTRL-W }

カーソル位置の識別子をタグとして使用し、:ptag を實行する。 (必要なら) 高さ N の新しいプレビューウィンドウを作成する。N が與へられなければ、’previewheight’ が使はれる。

CTRL-W g }

カーソル位置の識別子をタグとして使用し、:ptjump を實行する。(必要なら) 高さ N の新しいプレビューウィンドウを作成する。 N が與へられなければ、’previewheight’ が使はれる。

:ped[it][!] [++opt] [+cmd] {file}

{file} をプレビューウィンドウで編輯する。プレビューウィンドウは |:ptag| と同じやうに開かれる。カレントウィンドウとカーソル位置は變はらない。便利な例:

:pedit +/fputc /usr/include/stdio.h
:[range]ps[earch][!] [count] [/]pattern[/]

|:ijump| と同樣だが、見つかつたマッチをプレビューウィンドウで開く。プレビューウィンドウは |:ptag| と同じやうに開かれる。カレントウィンドウとカーソル位置は變はらない。便利な例:

:psearch popen

|:ptag| コマンドと同じやうに、これを使つてカーソル位置の單語に關する情報を自動的に表示させることができる。これは |:ptag| コマンドを使ふほど賢くないが、tags ファイルが必要なく、システムインクルードファイル內のマッチを見つけることもできる。例:

:au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")

注意: 遲いかもしれない。

:au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")

この例では、’updatetime’ に設定された時閒の閒カーソルが動かなければ、カーソル下のキーワードで ":ptag" が實行される。"nested" は他の自動コマンドを實行するので、シンタックスハイライトはプレビューウィンドウ內で動作する。"silent!" はタグが見つからなかつたときのエラーメッセージを抑止する。|CursorHold| も參照。この自動コマンドを再び無效化するには:

:au! CursorHold

見つかつたタグをハイライトさせる、カーソル位置に單語がないときに ":ptag" を實行しない、などの改良をしたものが以下の通り:

:au! CursorHold *.[ch] nested call PreviewWord()
:func PreviewWord()
:  if &previewwindow                  " プレビューウィンドウ內では實行しない
:    return
:  endif
:  let w = expand("<cword>")          " カーソル下の單語を得る
:  if w =~ '\a'                       " その單語が文字を含んでゐるなら
:
:    " 別のタグを表示させる前にすでに存在するハイライトを消去する
:    silent! wincmd P                 " プレビューウィンドウにジャンプ
:    if &previewwindow                        " すでにそこにゐるなら
:      match none                     " 存在するハイライトを消去する
:      wincmd p                       " もとのウィンドウに戾る
:    endif
:
:    " カーソル下の單語にマッチするタグを表示してみる
:    try
:       exe "ptag " . w
:    catch
:      return
:    endtry
:
:    silent! wincmd P                 " プレビューウィンドウにジャンプ
:    if &previewwindow                " すでにそこにゐるなら
:      if has("folding")
:        silent! .foldopen            " 閉ぢた折り疊みを開く
:      endif
:      call search("$", "b")          " 前の行の最後へ
:      let w = substitute(w, '\\', '\\\\', "")
:      call search('\<\V' . w . '\>') " カーソルをマッチしたところへ
:      " ここで單語にハイライトをつける
:      hi previewWord term=bold ctermbg=green guibg=green
:      exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
:      wincmd p                       " もとのウィンドウへ戾る
:    endif
:  endif
:endfun

11. 隱れ (hidden) バッファを使ふ

隱れ (hidden) バッファはウィンドウに表示されないが、メモリ上にはすでにロードされてゐる。これにより、每囘ファイルを保存したり讀み込んだりしなくても、また、ウィンドウ內にファイルを殘しておかなくても、他のバッファをウィンドウに表示することが可能となる。

hidden’ (’hi’) オプションがセットされてゐる場合は、":edit", ":next", ":tag" 等の他のファイルの編輯をスタートさせる全てのコマンドに關して、いらないバッファは捨てられない。バッファリストで移動コマンドを實行すると、’hidden’ オプションがセットされてゐないにもかかはらず、バッファが隱れ狀態 (hidden) になることがある。これはバッファが編輯中で、ウィンドウが强制的に削除され (’!’ を使用)、’autowrite’ がセットされてゐないかバッファを保存できなかつたときに起こる。

隱れ狀態の (hidden) バッファはそのバッファの編輯を開始するコマンドで隱れ狀態 (hidden) ではなくなる。":bdelete" コマンドでバッファを削除しても隱れ狀態 (hidden) ではなくなる。

オプション ’hidden’ はグローバルである、全てのバッファに適用される。オプション ’bufhidden’ は特定のバッファを例外にするために使へる。’bufhidden’ はこれらの値をとりうる:

<empty>hidden’ の値を使ふ。
hidehidden’ が設定されてなくてもこのバッファを隱れ狀態にする。
unloadhidden’ が設定されてゐるときでも隱れ狀態にせず、このバッファをアンロードする。
deleteバッファを削除する。

編輯中で隱れ狀態 (hidden) のバッファがあるときに Vim を終了しようとすると、エラーが表示されてその編輯中のバッファがカレントバッファになる。そして、バッファを保存するか (":wq")、保存しないで終了するか (":q!") を指定することができる。

注意: 他にも編輯中の隱れバッファ (hidden) や編輯中のバッファがあるかも!

バッファはリストから除かれることもある。これは、存在してゐるがバッファのリスト內にはないことを意味する。|unlisted-buffer|

:files[!] [flags] または
:buffers[!] [flags] または
:ls[!] [flags]

全バッファを表示。例:

1 #h   "/test/text"             line 1 ~
2u     "asdf"                   line 0 ~
3 %a + "version.c"              line 1 ~

[!] が含まれてゐるときは、バッファリストにないバッファも表示される。

各バッファは一意の番號が割り當てられてゐる。この番號は變はらないので、":buffer N" や "N CTRL-^" を使つてある特定のバッファへ移動できる。N はバッファの番號である。

ファイル名には、これらの特別な値が使用される:

[Prompt]|prompt-buffer|
[Popup]|popup-window| のバッファ
[Scratch]buftype’ が "nofile"
[No Name]ファイル名が指定されてゐない

|terminal-window| バッファの場合、狀態が使はれる。

指標 (同じ桁にある文字は互ひに排他的):

uリストされてゐないバッファ ([!] が使はれたときのみ表示される) |unlisted-buffer|
 %カレントウィンドウにあるバッファ
 #":e #" や CTRL_^ で使はれる代替バッファ
  aアクティブバッファ: ロードされてゐて、表示されてゐる
  h隱れバッファ: ロードされてゐるが、現在はウィンドウに表示されてゐない |hidden-buffer|
   -modifiable’ がオフのバッファ
   =リードオンリーのバッファ
   Rジョブの動いてゐるターミナルバッファ
   Fジョブが終了してゐるターミナルバッファ
   ?ジョブを持たないターミナルバッファ: ‘:terminal NONE‘
    +變更のあるバッファ
    x讀み込みエラーのあるバッファ

[flags] は以下の組み合はせを取る事ができる。ただしリストに存在するバッファに限られる:

     +變更されたバッファ
     -modifiable’ がオフのバッファ
     =リードオンリーのバッファ
     aアクティブバッファ
     uリストに存在しないバッファ ("!" の擧動は上書きされる)
     h隱れたバッファ
     x讀み込みエラーのあるバッファ
     %現在のバッファ
     #代替バッファ
     R動作してゐるジョブのあるターミナルバッファ
     F停止してゐるジョブのあるターミナルバッファ
     ?ジョブのないターミナルバッファ: ‘:terminal NONE
     t最後に使用された時閒でソートしたバッファを表示

フラグの合成は互ひの "and" を意味します。例へば:

     h+變更された隱れバッファ
     a+變更されたアクティブバッファ

表示されるバッファ名に對して |:filter| でパターンをマッチさせるには次のやうにする:

filter /\.vim/ ls
:bad[d] [+lnum] {fname}

ファイル名 {fname} をバッファリストに追加する。ただし、メモリ上には讀み込まれない。"lnum" が指定された場合、バッファに初めて移動したときにカーソルが指定された行番號にジャンプする。+ 以降の他のコマンドは無視されることに注意。

:[N]bd[elete][!] または
:bd[elete][!] [N]

バッファ [N] (デフォルト: カレントバッファ) をメモリから取り除き、バッファリストから削除する。バッファが編輯中の場合はこのコマンドは失敗する ([!] が與へられた場合は成功する。そのとき變更は破毀される)。ファイルには影響はない。このバッファを表示してゐる全てのウィンドウは閉ぢられる。

バッファ[N]がカレントバッファの場合は、他のバッファが代はりに表示される。このバッファには、ジャンプリストの中のメモリ上にロードされてゐるバッファを指し示してゐる最も最近のエントリが使用される。 實際は、バッファは完全に削除されてゐない。バッファリストから削除され |unlisted-buffer|、バッファに對するオプションの値、變數、マッピング・略語が消去される。

例:

:.,$-bdelete    " 現在のバッファからバッファを削除
                " 最後だが 1 つのバッファ
:%bdelete       " すべてのバッファを削除
:bdelete[!] {bufname}

":bdelete[!] [N]" と同樣だが、バッファを名前で指定する。|{bufname}| を參照。

:bdelete[!] N1 N2 ...

":bdelete[!]" をバッファ N1, N2 等に對して實行する。引數にはバッファ番號かバッファ名 (ただし數字のバッファ名は使用不可) を使用できる。バッファ名中のスペースの前にはバックスラッシュを入れる必要がある。

:N,Mbdelete[!]

":bdelete[!]" を N から M まで (N, M を含む) の全てのバッファに對して實行する |inclusive|。

:[N]bw[ipeout][!] または
:bw[ipeout][!] {bufname} または
:N,Mbw[ipeout][!] または
:bw[ipeout][!] N1 N2 ...

|:bdelete| に似てゐるが、本當にバッファを削除する。このバッファに關するすべてが失はれる。例へば、このバッファ中のすべてのマークが無效になり、オプション設定が失はれるなど。このことの意味がわからなければ使はないこと。 例:

:.+,$bwipeout   " 現在のバッファ以降のすべてのバッファを消す
                " ひとつ
:%bwipeout      " すべてのバッファを消す
:[N]bun[load][!] または
:bun[load][!] [N]

バッファ [N] (デフォルト: カレントバッファ)をメモリから取り除く。このバッファに割り當てられたメモリ領域を解放する。バッファはバッファリストには殘る。

バッファが編輯中の場合は、このコマンドは失敗する ([!] が與へられた場合は成功する。そのとき變更は破毀される)。このバッファを表示してゐるどのウィンドウも閉ぢられる。

バッファ [N] がカレントバッファの場合、他のバッファが代はりに表示される。このバッファには、ジャンプリストの中のメモリ上にロードされてゐるバッファを指し示してゐる最も最近のエントリが使用される。

:bunload[!] {bufname}

":bunload[!] [N]" と同樣だが、バッファを名前で指定する。|{bufname}| も參照。

:N,Mbunload[!]

":bunload[!]" を N から M まで (N, M を含む) の全てのバッファに對して實行する |inclusive|。

:bunload[!] N1 N2 ...

":bunload[!]" をバッファ N1, N2 等に對して實行する。引數にはバッファ番號かバッファ名 (ただし數字のバッファ名は使用不可) を使用できる。バッファ名中のスペースの前にはバックスラッシュを入れる必要がある。

:[N]b[uffer][!] [+cmd] [N]

バッファリストのバッファ [N] を編輯する。[N] が與へられなければ、そのままカレントバッファが編輯される。[!] については |:buffer-!| を參照。これはバッファリストにないバッファも ’buflisted’ フラグを設定することなく編輯する。

|+cmd| も參照。

:[N]b[uffer][!] [+cmd] {bufname}

バッファリストの {bufname} のバッファを編輯する。バッファリストの中でユニークであれば、部分的な名前でも動作する。

Note: 名前が數字であるバッファは、その名前で參照することはできないことに注意。代はりにバッファ番號を使ふ。

バッファ名のスペースの前にバックスラッシュを插入する。

[!] については |:buffer-!| を參照。

これはバッファリストにないバッファも ’buflisted’ フラグを設定することなく編輯する。

|+cmd| も參照。

:[N]sb[uffer] [+cmd] [N]

ウィンドウを分割しバッファリストのバッファ [N] を編輯する。[N] が與へられなければ、そのままカレントバッファが編輯される。ウィンドウ分割の際には、’switchbuf’ の "useopen" の設定に從ふ。これはバッファリストにないバッファも ’buflisted’ フラグを設定することなく編輯する。

|+cmd| も參照。

:[N]sb[uffer] [+cmd] {bufname}

ウィンドウを分割しバッファリストの |{bufname}| バッファを編輯する。これはバッファリストにないバッファも ’buflisted’ フラグを設定することなく編輯する。Note: 別名でカレントバッファのコピーを作つて、それを別のウィンドウで表示したいのなら、次のやうにすること:

:w foobar | sp #

|+cmd| も參照。

:[N]bn[ext][!] [+cmd] [N]

バッファリスト中の [N] 個先のバッファへ移動する。[N] のデフォルト値は 1 である。バッファリストの最後に到達したら、先頭に戾つてバッファを探す。[!] については |:buffer-!| を參照。

|+cmd| も參照。

ヘルプバッファにゐる場合、(もし有れば) 次のヘルプバッファへ移動する。同樣に、通常の (ヘルプではない) バッファにゐる場合、次の通常のバッファへ移動する。從つて、ヘルプウィンドウを表示してゐても、コード/テキストバッファを次々と表示する際にヘルプが邪魔にならない。次の 3 つのコマンドも同じやうに動作する。

:[N]sbn[ext] [+cmd] [N]

ウィンドウを分割しバッファリストの [N] 個先のバッファへ移動する。バッファリストの最後に到達したら、先頭に戾つてバッファを探す。ウィンドウ分割の際には、’switchbuf’ の "useopen" 設定に從ふ。

|+cmd| も參照。

:[N]bN[ext][!] [+cmd] [N] または
:[N]bp[revious][!] [+cmd] [N]

バッファリスト中の [N] 個前のバッファへ移動する。[N] のデフォルト値は 1 である。バッファリストの先頭に到達したら、最後に戾つてバッファを探す。[!] については |:buffer-!| を參照。’switchbuf’ も參照。

|+cmd| も參照。

:[N]sbN[ext] [+cmd] [N] または
:[N]sbp[revious] [+cmd] [N]

ウィンドウを分割しバッファリストの [N] 個前のバッファへ移動する。バッファリストの先頭に到達したら、最後に戾つてバッファを探す。ウィンドウ分割の際には、’switchbuf’ の "useopen" 設定に從ふ。

|+cmd| も參照。

:br[ewind][!] [+cmd]

バッファリスト中の先頭のバッファへ移動する。バッファリストが空の場合はリストされてゐない最初のバッファに移動する。

[!] については |:buffer-!| を參照。

:bf[irst] [+cmd]

|:brewind| と同じ。

|+cmd| も參照。

:sbr[ewind] [+cmd]

ウィンドウを分割してバッファリスト中の先頭のバッファへ移動する。バッファリストが空の場合はリストされてゐない最初のバッファへ移動する。’switchbuf’ オプションの設定に從ふ。

|+cmd| も參照。

:sbf[irst] [+cmd]

":sbrewind" と同じ。

:bl[ast][!] [+cmd]

バッファリスト中の最後のバッファへ移動する。バッファリストが空の場合はリストされてゐない最初のバッファへ移動する。

[!] については |:buffer-!| を參照。

:sbl[ast] [+cmd]

ウィンドウを分割してバッファリスト中の最後のバッファへ移動する。バッファリストが空の場合はリストされてゐない最初のバッファへ移動する。’switchbuf’ オプションの設定に從ふ。

:[N]bm[odified][!] [+cmd] [N]

バッファリスト中の [N] 個先の編輯中のバッファへ移動する。

Note:
このコマンドはリストされてゐないバッファも見つける。變更されてゐるバッファがない場合はコマンドは失敗する。

:[N]sbm[odified] [+cmd] [N]

ウィンドウを分割し、バッファリスト中の [N] 個先の編輯中のバッファへ移動する。’switchbuf’ オプションの設定に從ふ。

Note:
このコマンドはリストされてゐないバッファも見つける。

:[N]unh[ide] [N] または
:[N]sun[hide] [N]

バッファリスト中のメモリ上にロードされた各バッファに對して 1 つのウィンドウが開かれてゐるやうにスクリーンを再構成する。カウントが與へられたら、開くウィンドウの最大數となる。

:[N]ba[ll] [N] または
:[N]sba[ll] [N]

バッファリスト中の各バッファに對して 1 つのウィンドウが開かれてゐるやうにスクリーンを再構成する。カウントが與へられたら、開くウィンドウの最大數となる。’winheight’ も開くウィンドウの數を制限する (|:vertical| が前に與へられてゐるときは ’winwidth’)。この時點では、Buf/Win Enter/Leave 自動コマンドは新しいウィンドウに對して實行されない。ウィンドウに移動したときにのみ實行される。

コマンド修飾子 |:tab| をつけて實行すると、新しいウィンドウがそれぞれ新しいタブで開く。ただしタブの個數は ’tabpagemax’ に制限される。

Note:
上の全てのコマンドは他のバッファの編輯を開始する。各バッファの ’readonly’ フラグは保存されてゐる。":edit" コマンドと異なる點は、":edit" コマンドではファイルが讀まれた時點で ’readonly’ フラグが設定される點である。

12. 特殊なバッファ

バッファがファイルのテキストを保持するのでなく、他の目的のために使はれることもある。バッファの振る舞ひを變更するためにいくつかのオプションを設定することができる:

bufhiddenバッファがウィンドウに表示されなくなつたときどうするか
buftypeどんな種類のバッファか
swapfileバッファがスワップファイルを持つか
buflistedバッファリストに現れるか

いくつかの有用なバッファの種類:

quickfix

エラーリストやロケーションリストを保持するのに使はれる。|:cwindow| と |:lwindow| を參照。このコマンドは ’buftype’ オプションを "quickfix" にセット。これを變更してはならない。’swapfile’ はオフ。

help

ヘルプファイルを保持する。|:help| コマンドによつてのみ作成される。ヘルプバッファを示すフラグは內部にあり、變更することはできない。ヘルプバッファに對する ’buflisted’ オプションはリセットされる。

terminal

ターミナルウィンドウバッファ。|terminal| を參照。內容はジョブが終了するまでは、書き込みや變更をすることができない。

directory

ディレクトリの內容を表示する。ファイルエクスプローラープラグインで使用されてゐる。このバッファは以下の設定で作成される:

:setlocal buftype=nowrite
:setlocal bufhidden=delete
:setlocal noswapfile

バッファ名はディレクトリの名前になり、|:cd| コマンドを使つたときは變更される。

scratch

いつでも破毀されうるテキストを保持する。ウィンドウを閉ぢても保たれ、明示的に削除されなければならない。設定は:

:setlocal buftype=nofile
:setlocal bufhidden=hide
:setlocal noswapfile

このバッファを識別するためにはバッファ名が使はれる。ただし、そのためにはそのバッファに意味のある名前がついてゐなければならない。

unlisted

このバッファはバッファリストにない。通常の編輯には使はれず、ヘルプファイルを表示するためや、ファイル名やマークを記憶するために使はれる。":bdelete" コマンドによつてもこのオプションがセットされる。それゆゑ、このコマンドは完全にはバッファを削除しない。設定は:

:setlocal nobuflisted

Up: 目次   [Index]