WWW を検索
vimdoc を検索
Vim documentation: windows
main help file
*windows.txt*
For Vim バージョン 7.2. Last change: 2009 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
マルチウィンドウ、マルチバッファを使った編集
*windows*
*buffers*
ここではマルチウィンドウやマルチバッファを使用するために追加したコマンドについ
て説明する。さらに、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|
{Vi にはこれらのコマンドはない}
{コンパイル時に
|+windows|
機能が無効にされた場合は複数のウィンドウを使うことはで
きない}
{コンパイル時に
|+vertsplit|
機能が無効にされた場合は垂直分割ウィンドウを使うこと
はできない}
==============================================================================
1. はじめに
*windows-intro*
*window*
要約:
バッファとはメモリに保持しているファイルの内容である。
ウィンドウとはバッファの表示領域である。
タブページとはウィンドウを集めたものである。
ウィンドウはバッファの表示領域である。 1つのバッファに対して複数のウィンドウを
開くことができるし、異なる複数のバッファに対して複数のウィンドウを開くこともで
きる。
バッファは編集時にメモリ上にロードされたファイルのことを言う。
オリジナルのファイルはバッファ内容をそのファイルに上書きするまで変更されずにいる。
バッファは以下の3つの状態のうちのどれか1つの状態にある。
*active-buffer*
アクティブ: バッファ内容はウィンドウに表示されている。このバッファに対応する
ファイルが存在する場合、ファイルがバッファに読み込まれている。
バッファはそれ以降編集されていて、ファイルと異なっているかもしれ
ない。
*hidden-buffer*
隠れ(hidden): バッファ内容はウィンドウに表示されていない。このバッファに対応す
るファイルが存在する場合、ファイルはバッファに読み込まれている。
見ることができないが、それ以外はアクティブなバッファと同じ。
*inactive-buffer*
非アクティブ: バッファ内容はウィンドウに表示されていない。バッファには何もロー
ドされていない。ファイルが一度でもメモリにロードされていたなら、
そのバッファのオプションは記憶されている。
|viminfo|
ファイルにより
マークを含んでいるかもしれない。
状態表:
状態 ウィンドウ メモリ上に ":buffers"
表示 ロード 表示
アクティブ ○ ○ 'a'
隠れ(hidden) × ○ 'h'
非アクティブ × × ' '
注意: ノーマルコマンドが利用できない、あるいは使い勝手が悪い状況のために、全て
の
CTRL-W
コマンドは
|:wincmd|
によっても実行できる。
Vimではウィンドウを複数に分割することができる。タブページ
|tab-page|
というもの
もあり、タブページは複数のウィンドウを保持することができる。
==============================================================================
2. Vim の起動
*windows-starting*
デフォルトでは、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|
は、新しいウィンドウを開い
たりファイルを読み込んだりしても実行されない。そのオートコマンドはバッファ/
ウィンドウへ入った時にのみ実行される。
*status-line*
ステータス行はウィンドウの分割に使われる。
'laststatus'
オプションは一番下の
ウィンドウにステータス行を表示するかを設定する:
'laststatus'
= 0 常にステータス行を表示しない。
'laststatus'
= 1 ウィンドウが2つ以上ある場合に表示する。
'laststatus'
= 2 常にステータス行を表示する。
ステータス行の内容は
'statusline'
オプションで変更できる。
このオプションはウィンドウについてローカルにすることもでき、そうすると各ウィン
ドウごとに異なるステータスラインを表示することができる。
通常、ステータス行は反転表示される。これは
'highlight'
オプションの 's' キャラ
クタで変更できる。例えば、"sb" は太文字に設定する。ステータス行にハイライトを
使用しない場合("sn")、'^'がカレントウィンドウに使われ、'='が他のウィンドウに使
われる。マウスがサポートされていて
'mouse'
オプションでマウスが使用可能になっ
ている場合は、ステータス行をドラッグすることでウィンドウのリサイズを行なえる。
注: ステータス行が反転表示されるはずが反転表示されなければ、
'highlight'
オプ
ションに
'si'
が含まれているか確認すること。version 3.0 では、
'si'
がステータ
ス行の反転表示を意味していた。今は反転表示には
'sr'
を使用し、
'si'
はイタリッ
ク表示を意味している! イタリックを表示できない端末では、ステータス行は反転表
示となる。イタリック表示のための termcap コードがある場合にのみ、この問題が見
られる。
==============================================================================
3. ウィンドウのオープンとクローズ
*opening-window*
CTRL-W
s
*CTRL-W_s*
CTRL-W
S
*CTRL-W_S*
CTRL-W
CTRL-S
*CTRL-W_CTRL-S*
:
[N]
sp[lit]
[++opt]
[+cmd]
*:sp*
*:split*
カレントウィンドウを2つに分割する。その結果、2つの表示領域に同
じファイルが表示されるようになる。新しいウィンドウの高さは
N
になる(デフォル
トの高さはカレントウィンドウの高さの半分)。新しいウィンドウの
場所を確保するため、カレントウィンドウの高さは低くなる
(
'equalalways'
オプションがセットされていて、かつ
'eadirection'
の値が"hor"でない場合、他のウィンドウの中でカレントウィンドウ
か新しいウィンドウより大きいものがあれば、そのウィンドウも小さ
くなる)
注:
CTRL-S
は端末によっては使用できない。また、それ以上の入力
をブロックしてしまうかもしれない。続けるためには
CTRL-Q
を使うこ
と。
|++opt|
と
|+cmd|
も参照のこと。
CTRL-W
CTRL-V
*CTRL-W_CTRL-V*
CTRL-W
v
*CTRL-W_v*
:
[N]
vs[plit]
[++opt]
[+cmd]
[file]
*:vs*
*:vsplit*
|:split|
と同様、ただし垂直分割する。次のすべてに当てはまる場合、
ウィンドウは水平に広げられる:
1. 幅が指定されていない。
2.
'equalalways'
がセットされている。
3.
'eadirection'
が "ver" でない。
4. 他のウィンドウの中でカレントウィンドウか新しいウィンドウよ
り幅が広いものがある。
注意:他の局面では
CTRL-Q
は
CTRL-V
と同じだが、ここではそうでな
い。
CTRL-W
n
*CTRL-W_n*
CTRL-W
CTRL_N
*CTRL-W_CTRL-N*
:
[N]
new
[++opt]
[+cmd]
*:new*
新しいウィンドウが作成して空のファイルの編集が始まる。新しい
ウィンドウの高さは
N
になる(デフォルトの高さはカレントウィンドウ
の高さの半分)。新しいウィンドウの場所を確保するため、カレント
ウィンドウの高さは低くなる。 (
'equalalways'
オプションがセット
されていてかつ
'equalalways'
オプションが"hor"でない場合、他のウ
ィンドウの高さも低くなる)。
|++opt|
と
|+cmd|
も参照のこと。
'fileformats'
オプションが空でない場合は、与えられた最初のフォ
ーマットが新しいバッファにも使用される。
'fileformats'
オプションが空の場合は、カレントバッファの
'fileformat'
が使用される。これは引数
|++opt|
によって上書きされ
うる。
オートコマンドはこの順で実行される:
1. カレントウィンドウに対する WinLeave
2. 新しいウィンドウに対する WinEnter
3. カレントバッファに対する BufLeave
4. 新しいバッファに対する BufEnter
この動作は、はじめに ":split"、次に ":e" コマンドを実行した場
合と同じ動作である。
:
[N]
vne[w]
[++opt]
[+cmd]
[file]
*:vne*
*:vnew*
|:new|
と同様だが、垂直分割する。
'equalalways'
がセットされ、
'eadirection'
が"ver"でないならば、幅が指定されない限りウィン
ドウは水平に広げられる。
:
[N]
new
[++opt]
[+cmd]
{file}
:
[N]
sp[lit]
[++opt]
[+cmd]
{file}
*:split_f*
新しいウィンドウを作成し、そのウィンドウでファイル
{file}
の編
集が始まる。
[+cmd]
が指定された場合は、ファイルをロードしコマ
ンドを実行する
|+cmd|
。
|++opt|
も参照のこと。
新しいウィンドウの高さは
N
になる(デフォルトの高さはカレントウィ
ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ
レントウィンドウの高さは低くなる。(
'equalalways'
オプションが
セットされていれば他のウィンドウも低くなる)
:
[N]
sv[iew]
[++opt]
[+cmd]
{file}
*:sv*
*:sview*
*splitview*
":split" と同じ。ただし、バッファに対して
'readonly'
オプショ
ンがセットされる。
:
[N]
sf[ind]
[++opt]
[+cmd]
{file}
*:sf*
*:sfind*
*splitfind*
":split" と同じ。ただし、
|:find|
と同様に
'path'
から
{file}
を検索する。
{file}
が見つからなければ、ウィンドウは分割されない。
CTRL-W
CTRL-^
*CTRL-W_CTRL-^*
*CTRL-W_^*
CTRL-W
^ ":split #" と同じ。つまり、ウィンドウを2つに分割してもう一方の
ファイルを編集する。カウントが指定された場合は ":split #
N
" と
同じ。つまり、ウィンドウを分割してバッファ
N
を編集する。
オプション
'splitbelow'
と
'splitright'
が新しいウィンドウが現れる場所に影響を及ぼ
すことに注意。
*:vert*
*:vertical*
:vert[ical]
{cmd}
{cmd}
を実行する。
{cmd}
がウィンドウを分割させるコマンドを含んで
いれば、垂直分割させる。
cmdとして
|:execute|
または
|:normal|
を指定しても効果がない。
:lefta[bove]
{cmd}
*:lefta*
*:leftabove*
:abo[veleft]
{cmd}
*:abo*
*:aboveleft*
{cmd}
を実行する。
{cmd}
がウィンドウを分割させるコマンドを含んで
いる場合は、垂直分割ならば左側に、水平分割ならば上側にカレント
ウィンドウを出現させる。
'splitbelow'
と
'splitright'
を上書きする。
cmdとして
|:execute|
または
|:normal|
を指定しても効果がない。
:rightb[elow]
{cmd}
*:rightb*
*:rightbelow*
:bel[owright]
{cmd}
*:bel*
*:belowright*
{cmd}
を実行する。
{cmd}
がウィンドウを分割させるコマンドを含んで
いる場合は、垂直分割ならば右側に、水平分割ならば下側にカレント
ウィンドウを出現させる。
'splitbelow'
と
'splitright'
を上書きする。
cmdとして
|:execute|
または
|:normal|
を指定しても効果がない。
*:topleft*
*E442*
:to[pleft]
{cmd}
{cmd}
を実行する。
{cmd}
がウィンドウを分割させるコマンドを含んで
いる場合は、最上段に現れ、Vimのウィンドウの中で幅を最大にする。
垂直分割のときはウィンドウは最も左側に現れ、Vimウィンドウの中で
高さを最大にする。
cmdとして
|:execute|
または
|:normal|
を指定しても効果がない。
*:botright*
:bo[tright]
{cmd}
{cmd}
を実行する。
{cmd}
がウィンドウを分割させるコマンドを含んで
いる場合は、最下段に現れ、Vimのウィンドウの中で幅を最大にす
る。垂直分割のときはウィンドウは最も右側に現れ、Vimウィンドウ
の中で高さを最大にする。
cmdとして
|:execute|
または
|:normal|
を指定しても効果がない。
これらのコマンドモディファイヤを組み合わせて、最大高さの垂直分割したウィンドウ
を作ることができる。例:
:vertical topleft edit tags
ウィンドウを垂直分割し、"tags"ファイルのウィンドウを最大の高さで最も左に開く。
ウィンドウを閉じる
------------------
CTRL-W
q
*CTRL-W_q*
CTRL-W
CTRL-Q
*CTRL-W_CTRL-Q*
:q[uit] カレントウィンドウを終了する。最後のウィンドウ(ヘルプウィンド
ウを除く)を終了すると Vim が終了する。
'hidden'
オプションが
セットされていて、かつ、カレントバッファを表示しているウィンド
ウが 1つしかない場合は、そのバッファは隠れ状態(hidden)となる。
'hidden'
オプションがセットされていなくて、カレントバッファを
表示しているウィンドウが1つしかなくて、かつ、そのバッファが編
集中の場合は、このコマンドは失敗する。 (注:
CTRL-Q
は総ての端
末で動作しない。)
:q[uit]! カレントウィンドウを終了する。このウィンドウがバッファを表示し
ている最後のウィンドウの場合、このバッファに対する変更は総て失
われる。最後のウィンドウ(ヘルプウィンドウを除く)を終了すると
Vim が終了する。たとえ
'hidden'
オプションがセットされていたと
しても、バッファ内容は失われる。
CTRL-W
c
*CTRL-W_c*
*:clo*
*:close*
:clo[se][!] カレントウィンドウを閉じる。
'hidden'
オプションがセットされて
いる時、または、バッファが変更されていて[!]を使用した時は、(
バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態
(hidden)になる。
カレントタブページにウィンドウが1つしかなく、他にタブページが
あるとき、このコマンドを実行するとカレントタブページが閉じる。
|tab-page|
このコマンドは以下の場合に失敗する:
*E444*
- スクリーン上に1つのウィンドウしかない時
-
'hidden'
がセットされていなくて、[!]を使用せず、バッファが変
更されていて、かつ、このバッファが他のウィンドウで表示されて
いない場合
バッファへの変更は保存されず、失われることもないため、このコマ
ンドは「安全な」コマンドである。
CTRL-W
CTRL-C
*CTRL-W_CTRL-C*
CTRL-W
CTRL-C
はカレントウィンドウを閉じると期待するかもしれな
いが、
CTRL-C
はコマンドをキャンセルするために期待通りには動作
しない。
*:hide*
:hid[e] カレントウィンドウがスクリーン上の最後のウィンドウでなければ、
カレントウィンドウを終了する。 (他のウィンドウがバッファを編集
していなく、かつ
'bufhidden'
の値が "unloaded" か"delete" でな
いならば)そのバッファは隠れ状態(hidden)となる。
そのウィンドウがカレントタブページで最後のウィンドウであるなら
ばタブページも閉じる。
|tab-page|
'hidden'
の値はこのコマンドには無関係である。
バッファへの変更は保存されず、失われることもないため、このコマ
ンドは「安全な」コマンドである。
:hid[e]
{cmd}
{cmd}
を実行し、同時に
'hidden'
をセットする。
{cmd}
が実行され
た後に
'hidden'
の以前の値が復旧される。
例:
:hide edit Makefile
これはカレントバッファに変更があっても、それを隠しバッファにし
、"Makefile" を編集する。
CTRL-W
o
*CTRL-W_o*
*E445*
CTRL-W
CTRL-O
*CTRL-W_CTRL-O*
*:on*
*:only*
:on[ly][!] カレントウィンドウをスクリーン上にある唯一のウィンドウにする。
他の総てのウィンドウは閉じられる。
'hidden'
オプションがセットされていれば、閉じられた総てのバッ
ファは隠れ状態(hidden)となる。
'hidden'
オプションがセットされておらず、
'autowrite'
オプショ
ンがセットされている場合は、編集中のバッファは保存される。さも
なければ、編集中のバッファを表示しているウィンドウは閉じられる
ことはない。 ただし[!]が与えられていれば、それらのバッファは隠
れ状態(hidden)となる。しかし、編集中のバッファは決して削除され
ないので、変更は失われない。
==============================================================================
4. ウィンドウ間のカーソル移動
*window-move-cursor*
CTRL-W
<Down>
*CTRL-W_<Down>*
CTRL-W
CTRL-J
*CTRL-W_CTRL-J*
*CTRL-W_j*
CTRL-W
j カーソルをカレントウィンドウの
N
個下のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。
CTRL-W
<Up>
*CTRL-W_<Up>*
CTRL-W
CTRL-K
*CTRL-W_CTRL-K*
*CTRL-W_k*
CTRL-W
k カーソルをカレントウィンドウの
N
個上のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。
CTRL-W
<Left>
*CTRL-W_<Left>*
CTRL-W
CTRL-H
*CTRL-W_CTRL-H*
CTRL-W
<BS>
*CTRL-W_<BS>*
*CTRL-W_h*
CTRL-W
h カーソルをカレントウィンドウの
N
個左のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。
CTRL-W
<Right>
*CTRL-W_<Right>*
CTRL-W
CTRL-L
*CTRL-W_CTRL-L*
*CTRL-W_l*
CTRL-W
l カーソルをカレントウィンドウの
N
個右のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。
CTRL-W
w
*CTRL-W_w*
*CTRL-W_CTRL-W*
CTRL-W
CTRL-W
カウント指定なし: カーソルをカレントウィンドウの下/右のウィン
ドウに移動。下/右にウィンドウがなければ、一番上/左のウィンド
ウに移動。カウント指定有り:
N
番目のウィンドウに移動(ウィンド
ウは左上から右下へと番号が振られる)。ウィンドウの番号を知るに
は
|bufwinnr()|
と
|winnr()|
を参照。
N
がウィンドウの個数より
大きい場合、最後のウィンドウへ移動する。
*CTRL-W_W*
CTRL-W
W カウント指定なし: カーソルをカレントウィンドウの上/左のウィン
ドウに移動。上/左にウィンドウがなければ、一番下/右のウィンド
ウに移動。カウント指定有り:
N
番目のウィンドウに移動
(
CTRL-W
w と同様)。
CTRL-W
t
*CTRL-W_t*
*CTRL-W_CTRL-T*
CTRL-W
CTRL-T
カーソルを一番左上のウィンドウに移動。
CTRL-W
b
*CTRL-W_b*
*CTRL-W_CTRL-B*
CTRL-W
CTRL-B
カーソルを一番右下のウィンドウに移動。
CTRL-W
p
*CTRL-W_p*
*CTRL-W_CTRL-P*
CTRL-W
CTRL-P
カーソルを直前の(最後にアクセスしていた)ウィンドウに移動。
*CTRL-W_P*
*E441*
CTRL-W
P プレビューウィンドウに移動。プレビューウィンドウがない場合には
エラーになる。
{
|+quickfix|
機能なしでコンパイルされた場合には使用できない}
ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッ
ファを表示していない場合、ビジュアルモードは終了する。ウィンドウが同じバッファ
を表示している場合、カーソル位置は選択領域が保たれるようにセットされる。
*:winc*
*:wincmd*
以上のコマンドは ":wincmd" によっても実行することができる:
:
[count]
winc[md]
{arg}
CTRL-W
[count]
{arg}
を実行するのと同じ。例:
:wincmd j
下のウィンドウに移動する。
このコマンドは(
|CursorHold|
自動コマンドイベントのため)ノー
マルモードが利用できないときやノーマルコマンドが不便なときに有
効である。
count はウィンドウ番号であってもよい。例:
:exe nr . "wincmd w"
これは "nr" 番のウィンドウへ移動する。
==============================================================================
5. ウィンドウの移動
*window-moving*
CTRL-W
r
*CTRL-W_r*
*CTRL-W_CTRL-R*
*E443*
CTRL-W
CTRL-R
ウィンドウ位置を下/右へ回転させる。1番のウィンドウは2番目に、
2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。
カーソルは同じウィンドウにとどまる。
この移動はカレントウィンドウと同じ段/列の中だけで行われる。
*CTRL-W_R*
CTRL-W
R ウィンドウ位置を上/左へ回転させる。1番のウィンドウは2番目に、
2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。
カーソルは同じウィンドウにとどまる。
この移動はカレントウィンドウと同じ段/列の中だけで行われる。
CTRL-W
x
*CTRL-W_x*
*CTRL-W_CTRL-X*
CTRL-W
CTRL-X
カウント指定なし: カレントウィンドウと次(1つ下)のウィンドウを
入れ替える。次のウィンドウがない(カレントウィンドウが一番下の)
場合は、前(1つ上)のウィンドウと入れ替える。
カウント指定有り: カレントウィンドウと上から
N
番目のウィンドウ
(一番上は1番目)を入れ替える。カーソルは入れ替えた相手のウィン
ドウに移動する。
水平分割と垂直分割が混ざっている場合には、カレントウィンドウと
同じ段/列の中だけで入れ替えが行われる。
以下のコマンドはウィンドウのレイアウトを変更するために使える。例えば、2つの垂
直分割されたウィンドウがある場合、
CTRL-W
K はそれらを水平分割に変更する。
CTRL-W
H はその逆を行う。
*CTRL-W_K*
CTRL-W
K カレントウィンドウを最上段に移動し、幅を最大にする。これは、カレ
ントウィンドウを閉じ、それから "topleft split" で別のウィンド
ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ
の内容が表示されるということだけである。
*CTRL-W_J*
CTRL-W
J カレントウィンドウを最下段に移動し、幅を最大にする。これは、カレ
ントウィンドウを閉じ、それから "botright split" で別のウィンド
ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ
の内容が表示されるということだけである。
*CTRL-W_H*
CTRL-W
H カレントウィンドウを最左列に移動し、高さを最大にする。これは、
カレントウィンドウを閉じ、それから ":vert topleft split" で別
のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント
ウィンドウの中身が使われるということだけである。
{
|+vertsplit|
機能なしでコンパイルされた場合は使用できない}
*CTRL-W_L*
CTRL-W
L カレントウィンドウを最右列に移動し、高さを最大にする。これは、
カレントウィンドウを閉じ、それから ":vert botright split" で別
のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント
ウィンドウの中身が使われるということだけである。
{
|+vertsplit|
機能なしでコンパイルされた場合は使用できない}
*CTRL-W_T*
CTRL-W
T カレントウィンドウを新しいタブページへ移動する。カレントタブペ
ージにウィンドウが1つしかないときは、このコマンドは失敗する。
カウントが指定されると、その番号のタブページの前に新しいタブペー
ジが開く。指定されないときはカレントタブページの後ろに開く。
==============================================================================
6. ウィンドウのサイズ変更
*window-resize*
*CTRL-W_=*
CTRL-W
= 総てのウィンドウの高さ・幅を(ほとんど)同じにする。ただしカレン
トウィンドウに対しては
'winheight'
と
'winwidth'
が適用される。
'winfixheight'
がセットされたウィンドウの高さはそのままにし、
'winfixwidth'
がセットされたウィンドウの幅はそのままにする。
:res[ize] -
N
*:res*
*:resize*
*CTRL-W_-*
CTRL-W
- カレントウィンドウの高さを
N
(デフォルトは1)行分低くする。
'vertical'
の後に置かれたときは、幅を
N
桁分減らす。
:res[ize] +
N
*CTRL-W_+*
CTRL-W
+ カレントウィンドウの高さを
N
(デフォルトは1)行分高くする。
'vertical'
の後に置かれたときは、幅を
N
桁分増やす。
:res[ize]
[N]
CTRL-W
CTRL-_
*CTRL-W_CTRL-_*
*CTRL-W__*
CTRL-W
_ カレントウィンドウの高さを
N
行にする(デフォルト: 可能な限り高く
する)
z
{nr}<CR>
カレントウィンドウの高さを
{nr}
にする。
*CTRL-W_<*
CTRL-W
< カレントウィンドウの幅を
N
(デフォルトは1)桁分減らす。
*CTRL-W_>*
CTRL-W
> カレントウィンドウの幅を
N
(デフォルトは1)桁分増やす。
:vertical res[ize]
[N]
*:vertical-resize*
*CTRL-W_bar*
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'
によって設定され
る。これらは固定値で、ウィンドウはこれらより小さくなることはない。
These are hard values, a window will never become smaller.
==============================================================================
7. コマンド引数とバッファリスト
*buffer-list*
args list buffer list meaning
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 / :first 15. :brewind / :bfirst 最初の引数/バッファに移動
6. :last 16. :blast 最後の引数/バッファに移動
7. :all 17. :ball 総ての引数/バッファを編集
18. :unhide 総ての読み込まれたバッファを編集
19. :
[N]
bmod
[N]
N
個先の編集中のバッファへ移動
split & args list split & buffer list meaning
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 / :sfirst 35. :sbrewind / :sbfirst split + 最初の引数/バッファに移動
26. :slast 36. :sblast split + 最後の引数/バッファに移動
27. :sall 37: :sball 総ての引数/バッファを編集
38. :sunhide 総ての読み込まれたバッファを編集
39. :
[N]
sbmod
[N]
split +
N
個先の編集中のバッファへ移動
40. :args コマンド引数の表示
41. :buffers バッファの表示
[N]
の意味はコマンドによって異なる。
?2、?3、?4のコマンドにおいては、
[N]
は前方/後方に移動するバッファ数
1、21のコマンドにおいては、
[N]
は引数番号、デフォルトはカレント引数
11、31のコマンドにおいては、
[N]
はバッファ番号、デフォルトはカレントバッファ
19、39のコマンドにおいては、
[N]
はカウント
注: ":next" は例外である。なぜならこのコマンドは Vi との互換性のためにファイル
名リストを受け付けなければならないからである。
引数リストと複数のウィンドウ
----------------------------
引数リストのカレント位置は各ウィンドウ毎に異なっている可能性がある。 ":e file"
コマンドを実行した際には引数リストないのカレント位置は変化しないが、カレント位
置のファイルを編集していないことを忘れないでほしい。この状態を示すために、ファ
イルメッセージに(もしあるならタイトルにも)「(file (
N
) of M)」と表示する。ここ
で、"(
N
)"はファイルリスト中のカレント位置を、"M"はファイルリスト中のファイルの
数を表している。
引数リストの総てはバッファリストに追加される。だから、":bnext"のようなバッファ
リストコマンドで引数リストを表示することができる。
:
[N]
al[l][!]
[N]
*:al*
*:all*
*:sal*
*:sall*
:
[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]
*:sa*
*:sargument*
":split | argument
[N]
" の短縮形: ウィンドウを分割し、
N
番目の
引数へ移動する。しかし、
N
番目の引数がなければ、ウィンドウは分
割しない。
|++opt|
と
|+cmd|
も参照。
:
[N]
sn[ext][!] [file ..]
*:sn*
*:snext*
":split |
[N]
next" の短縮形: ウィンドウを分割し、
N
個先の引数へ
移動する。しかし、
N
個先の引数がなければ、ウィンドウは分割しな
い。
|++opt|
と
|+cmd|
も参照。
:
[N]
spr[evious][!]
[++opt]
[+cmd]
[N]
*:spr*
*:sprevious*
:
[N]
sN[ext][!]
[++opt]
[+cmd]
[N]
*:sN*
*:sNext*
":split |
[N]
Next" の短縮形: ウィンドウを分割し、
N
個前の引数へ
移動する。しかし、
N
個前の引数がなければ、ウィンドウは分割しな
い。
|++opt|
と
|+cmd|
も参照。
*:sre*
*:srewind*
:sre[wind][!]
[++opt]
[+cmd]
":split | rewind" の短縮形: ウィンドウを分割し、最初の引数へ移
動する。しかし、引数がなければ、ウィンドウは分割しない。
|++opt|
と
|+cmd|
も参照。
*:sfir*
*:sfirst*
:sfir[st]
[++opt]
[+cmd]
":srewind" と同じ。
*:sla*
*:slast*
:sla[st][!]
[++opt]
[+cmd]
":split | last" の短縮形: ウィンドウを分割し、最後の引数へ移動
する。しかし、引数がなければ、ウィンドウは分割しない。
|++opt|
と
|+cmd|
も参照。
*:dr*
*:drop*
:dr[op]
[++opt]
[+cmd]
{file}
..
最初の
{file}
を編集する。
- そのファイルがすでにあるウィンドウで開かれていたら、そのウィ
ンドウに移動する。
- そのファイルがウィンドウで開かれていなければ、カレントウィン
ドウで開く。カレントバッファが破棄されえない(
|abandon|
)ならば
まずウィンドウが分割される。
|:next|
コマンドと同様に、
|argument-list|
がセットされる。
このコマンドの目的は、Vimに別のファイルを開いてほしいプログラ
ム(例:デバッガ)から使われることである。
コマンド修飾子
|:tab|
をつけて実行すると、各引数が1つずつタブ
ページで開かれる。最後のウィンドウが空ならそのウィンドウが使わ
れる。
|++opt|
と
|+cmd|
も参照。
{+gui 機能つきでコンパイルされたときのみ使用可能}
==============================================================================
8. 全てのバッファ/ウィンドウに対してコマンド実行
*list-repeat*
*:windo*
:windo[!]
{cmd}
各ウィンドウに対して
{cmd}
を実行する。
これは次のようにするのと同じ動作をする:
CTRL-W t
:{cmd}
CTRL-W w
:{cmd}
etc.
カレントタブページ内でのみ実行される。
1つのウィンドウに対してエラーが検出されると、それ以降
のウィンドウに対しては実行されない。
最後のウィンドウ(またはエラーが起こったウィンドウ)が
カレントウィンドウになる。
{cmd}
は '|' を含んで複数のコマンドを連結していてもよ
い。
{cmd}
はウィンドウの開閉、並べ替えをしてはならない。
{Vi にはない}
{
|+listcmds|
機能なしでコンパイルされた場
合は使用できない}
|:tabdo|
,
|:argdo|
,
|:bufdo|
も参照。
*:bufdo*
:bufdo[!]
{cmd}
{cmd}
をバッファリスト内の各バッファに対して実行。
これは次のようにするのと同じ動作をする:
:bfirst
:{cmd}
:bnext
:{cmd}
etc.
カレントファイルが破棄されえなく(
|abandon|
)かつ [!]が
与えられない場合、このコマンドは失敗する。
1つのバッファに対してエラーが検出されると、それ以降
のバッファに対しては実行されない。
リストされていないバッファはスキップされる。
最後のバッファ(またはエラーが起こったバッファ)がカレ
ントウィンドウになる。
{cmd}
は '|' を含んで複数のコマンドを連結していてもよ
い。
{cmd}
はバッファリストにバッファを削除、追加してはなら
ない。
注意:このコマンドを実行している間、Syntax 自動コマンド
イベントが
'eventignore'
に追加され、無効化される。
これは各バッファの編集を大幅にスピードアップさせる。
{Vi にはない}
{
|+listcmds|
機能なしでコンパイルされた
場合は使用できない}
|:tabdo|
,
|:argdo|
,
|:bufdo|
も参照。
例:
:windo set nolist nofoldcolumn | normal zn
これは
'list'
オプションをリセットし全てのウィンドウの折り畳みを無効化する。
:bufdo set fileencoding= | update
これは各バッファの
'fileencoding'
をリセットし、バッファに変更があったらそれを
保存する。結果として、すべてのバッファが同じ
'encoding'
のエンコーディングを使
用する(変換がうまくいったとすれば)。
==============================================================================
9. カーソル位置のタグ名/ファイル名
*window-tag*
*:sta*
*:stag*
:sta[g][!]
[tagname]
":tag[!]
[tagname]
" を実行し見つかったタグの表示のためにウィン
ドウを分割する。
|:tag|
を参照。
CTRL-W
]
*CTRL-W_]*
*CTRL-W_CTRL-]*
CTRL-W
CTRL-]
カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ
として使用し、新しくできた上側のウィンドウでタグに移動する。新
しいウィンドウの高さは
N
となる。
*CTRL-W_g]*
CTRL-W
g ] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ
として使用し、新しくできた上側のウィンドウで ":tselect" を実行
する。新しいウィンドウの高さは
N
となる。
*CTRL-W_g_CTRL-]*
CTRL-W
g
CTRL-]
カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ
として使用し、新しくできた上側のウィンドウで ":tjump" を実行す
る。新しいウィンドウの高さは
N
となる。
CTRL-W
f
*CTRL-W_f*
*CTRL-W_CTRL-F*
CTRL-W
CTRL-F
カレントウィンドウを2つに分割する。カーソル位置のファイル名を
編集する。":split ]f" と同様だが、ファイルが存在しなければウィ
ンドウを分割しない。
ファイルを探すディレクトリのリストとして変数
'path'
が使われる
。また、カレントファイルのパスも探される。
その名前が "type://machine/path" のようにハイパーテキストリン
クならば "/path" のみが使われる。
count が与えられた場合、count 番目にマッチしたファイルが編集さ
れる。
{コンパイル時に
|+file_in_path|
機能が無効にされた場合は使用で
きない}
CTRL-W
F
*CTRL-W_F*
カレントウィンドウを2つに分割する。カーソル下のファイル名を開
き、そのファイル名の後に書かれている行番号へジャンプする。ど
のように行番号を取得するかについては
|gF|
を参照。
{コンパイル時に
|+file_in_path|
機能が無効にされた場合は使用で
きない}
CTRL-W
gf
*CTRL-W_gf*
新しいタブページを開き、カーソル下のファイル名を開く。
"tab split"と"gf"の組み合わせに似ているが、そのファイルが存在
しない場合に新しいタブページを作成しないところが異なる。
{コンパイル時に
|+file_in_path|
機能が無効にされた場合は使用で
きない}
CTRL-W
gF
*CTRL-W_gF*
新しいタブページを開き、カーソル下のファイル名を開いて、ファイ
ル名の後に書かれている行番号へジャンプする。
"tab split"と"gF"の組み合わせに似ているが、そのファイルが存在
しない場合に新しいタブページを作成しないところが異なる。
{コンパイル時に
|+file_in_path|
機能が無効にされた場合は使用で
きない}
|CTRL-W_CTRL-I|
も参照:カーソル位置のキーワードを含むインクルードファイルを新
しいウィンドウで開く。
==============================================================================
10. プレビューウィンドウ
*preview-window*
プレビューウィンドウは別のファイルをプレビューする特別なウィンドウである。通常
はインクルードファイルや関数の定義を示すのに使われる小さなウィンドウである。
{コンパイル時に
|+quickfix|
機能が無効にされた場合は使用できない}
プレビューウィンドウはタブページにつき1つだけ開くことができる。プレビューウィ
ンドウは以下のコマンドのどれかが実行されたとき作成される。オプション
'previewheight'
によってプレビューウィンドウが開くときの高さを設定できる。プレ
ビューウィンドウを識別するために、プレビューウィンドウにはオプション
'previewwindow'
がセットされる。他のウィンドウを開閉したときにも同じ高さを保つ
ためにオプション
'winfixheight'
がセットされる。
*:pta*
*:ptag*
:pta[g][!]
[tagname]
":tag[!]
[tagname]
" を実行し、現在のバッファまたはカーソル位置
を変えずに「プレビュー」ウィンドウないで検索したタグを表示す
る。「プレビュー」ウィンドウがすでに存在していた場合は、(ヘル
プウィンドウのように)そのウィンドウに表示する。新しいウィンド
ウが開いたときは、
'previewheight'
の設定がそのウィンドウの高さ
になる。
|:tag|
も参照のこと。
例は下を参照。
|CursorHold-example|
|:tag|
とは小さな違いがある:[tagname] がすでに表示されているタ
グと同じ場合、マッチしたタグリスト内の位置はリセットされない。
このおかげで
|:ptnext|
の後でも CursorHold の例がうまくいくよ
うになっている。
CTRL-W
z *
CTRL-W
_j
CTRL-W
CTRL-Z
*CTRL-W_CTRL-Z*
*:pc*
*:pclose*
:pc[lose][!] 現在開いている「プレビュー」ウィンドウを閉じる。
'hidden'
オプ
ションがセットされている時、または、バッファが編集中で[!]が使
われた時、(そのバッファを編集している他のウィンドウがなければ)
そのバッファは隠れ状態(hidden)となる。いずれかの「プレビュー」
バッファを閉じることができない場合、このコマンドは失敗する。
|:close|
も参照のこと。
*:pp*
*:ppop*
:
[count]
pp[op][!]
プレビューウィンドウで ":
[count]
pop[!]" を実行する。
|:pop|
と
|:ptag|
を参照。
{Vi にはない機能}
CTRL-W
}
*CTRL-W_}*
カーソル位置の識別子をタグとして使用し、:ptag を実行する。 (必
要なら)高さ
N
の新しいプレビューウィンドウを作成する。
N
が与えら
れなければ、
'previewheight'
が使われる。
CTRL-W
g }
*CTRL-W_g}*
カーソル位置の識別子をタグとして使用し、:ptjump を実行する。
(必要なら)高さ
N
の新しいプレビューウィンドウを作成する。
N
が与
えられなければ、
'previewheight'
が使われる。
*:ped*
*:pedit*
:ped[it][!]
[++opt]
[+cmd]
{file}
{file}
をプレビューウィンドウで編集する。プレビューウィンドウは
|:ptag|
と同じように開かれる。カレントウィンドウとカーソル位置
は変わらない。便利な例:
:pedit +/fputc /usr/include/stdio.h
*:ps* *:psearch*
:
[range]
ps[earch][!]
[count]
[/]pattern[/]
|:ijump|
と同様だが、見つかったマッチをプレビューウィンドウで
開く。プレビューウィンドウは
|:ptag|
と同じように開かれる。カ
レントウィンドウとカーソル位置は変わらない。便利な例:
:psearch popen
|:ptag|
コマンドと同じように、これを使ってカーソル位置の単語に
関する情報を自動的に表示させることが出来る。これは
|:ptag|
コ
マンドを使うほど賢くないが、tags ファイルが必要なく、システム
インクルードファイル内のマッチを見つけることも出来る。例:
:au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
注意:遅いかもしれない。
例
*CursorHold-example*
: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)バッファを使う
*buffer-hidden*
隠れ(hidden)バッファはウィンドウに表示されないが、メモリ上にはすでにロードされ
ている。これにより、毎回ファイルを保存したり読み込んだりしなくても、また、ウィ
ンドウ内にファイルを残しておかなくても、他のバッファをウィンドウに表示すること
が可能となる。
{
|+listcmds|
機能なしでコンパイルされた場合には使用できない}
*:buffer-!*
'hidden'
(
'hi'
) オプションがセットされている場合は、":edit", ":next", ":tag"
等の他のファイルの編集をスタートさせる総てのコマンドに関して、いらないバッファ
は捨てられない。バッファリストで移動コマンドを実行すると、
'hidden'
オプション
がセットされていないにもかかわらず、バッファが隠れ状態(hidden)になることがあ
る。これはバッファが編集中で、ウィンドウが強制的に削除され('!' を使用)、
'autowrite'
がセットされていないかバッファを保存できなかったときに起こる。
隠れ状態の(hidden)バッファはそのバッファの編集を開始するコマンドで隠れ状態
(hidden)ではなくなる。 ":bdelete" コマンドでバッファを削除しても隠れ状態
(hidden)ではなくなる。
オプション
'hidden'
はグローバルである、全てのバッファに適用される。オプション
'bufhidden'
は特定のバッファを例外にするために使える。
'bufhidden'
はこれらの値
をとりうる:
<empty>
'hidden'
の値を使う。
hide
'hidden'
が設定されてなくてもこのバッファを隠れ状態に
する。
unload
'hidden'
が設定されているときでも隠れ状態にせず、この
バッファをアンロードする。
delete バッファを削除する。
*hidden-quit*
編集中で隠れ状態(hidden)のバッファがあるときに Vim を終了しようとすると、エ
ラーが表示されてその編集中のバッファがカレントバッファになる。そして、バッファ
を保存するか(":wq")、保存しないで終了するか(":q!")を指定することができる。
注意: 他にも編集中の隠れバッファ(hidden)や編集中のバッファがあるかも。
バッファはリストから除かれることもある。これは、存在しているがバッファのリスト内
にはないことを意味する。
|unlisted-buffer|
:files[!]
*:files*
:buffers[!]
*:buffers*
*:ls*
:ls[!] 全バッファを表示。例:
1 #h "/test/text" line 1
2u "asdf" line 0
3 %a+ "version.c" line 1
[!] が含まれているときは、バッファリストにないバッファも表示さ
れる。
各バッファは一意の番号が割り当てられている。この番号は変わらな
いので、 ":buffer
N
" や "
N
CTRL-^
" を使ってある特定のバッファ
へ移動できる。
N
はバッファの番号である。
指標(同じ桁にある文字は互いに排他的):
u リストされていないバッファ([!] が使われたときのみ表示
される)
|unlisted-buffer|
% カレントウィンドウにあるバッファ
# ":e #" や CTRL_^ で使われる代替バッファ
a アクティブバッファ:ロードされていて、表示されている
h 隠れバッファ:ロードされているが、現在はウィンドウに表
示されていない
|hidden-buffer|
-
'modifiable'
がオフのバッファ
= リードオンリーのバッファ
+ 変更のあるバッファ
x 読み込みエラーのあるバッファ
*:bad*
*:badd*
:bad[d] [+lnum]
{fname}
ファイル名
{fname}
をバッファリストに追加する。ただし、メモリ
上には読み込まれない。 "lnum" が指定された場合、バッファに初め
て移動したときにカーソルが指定された行番号にジャンプする。 +
以降の他のコマンドは無視されることに注意。
:
[N]
bd[elete][!]
*:bd*
*:bdel*
*:bdelete*
*E516*
:bd[elete][!]
[N]
バッファ
[N]
(デフォルト: カレントバッファ)をメモリから取り除
き、バッファリストから削除する。バッファが編集中の場合はこのコ
マンドは失敗する([!] が与えられた場合は成功する。そのとき変更
は破棄される)。ファイルには影響はない。このバッファを表示し
ている総てのウィンドウは閉じられる。バッファ
[N]
がカレントバッ
ファの場合は、他のバッファが代わりに表示される。このバッファに
は、ジャンプリストの中のメモリ上にロードされているバッファを指
し示している最も最近のエントリが使用される。
実際は、バッファは完全に削除されていない。バッファリストから削
除され
|unlisted-buffer|
、バッファに対するオプションの値、変数、
マッピング・略語が消去される。
:bdelete[!]
{bufname}
*E93*
*E94*
":bdelete[!]
[N]
" と同様だが、バッファを名前で指定する。数字が
名前になっているバッファは、その数字では参照されない。つまり、
バッファ番号として使用されてしまう。バッファ名中のスペースの前
にはバックスラッシュを入れる必要がある。
:bdelete[!] N1 N2 ...
":bdelete[!]" をバッファN1、N2、等に対して実行する。引数には
バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使
用できる。バッファ名中のスペースの前にはバックスラッシュを入れ
る必要がある。
:
N
,Mbdelete[!] ":bdelete[!]" を
N
から M まで(
N
,Mを含む)の総てのバッファに対
して実行する。
:
[N]
bw[ipeout][!]
*:bw*
*:bwipe*
*:bwipeout*
*E517*
:bw[ipeout][!]
{bufname}
:
N
,Mbw[ipeout][!]
:bw[ipeout][!] N1 N2 ...
|:bdelete|
に似ているが、本当にバッファを削除する。このバッフ
ァに関するすべてが失われる。例えば、このバッファ中のすべてのマー
クが無効になり、オプション設定が失われるなど。このことの意味が
わからなければ使わないこと。
:
[N]
bun[load][!]
*:bun*
*:bunload*
*E515*
:bun[load][!]
[N]
バッファ
[N]
(デフォルト:カレントバッファ)をメモリから取り除
く。このバッファに割り当てられたメモリ領域を解放する。バッファ
はバッファリストには残る。バッファが編集中の場合は、このコマン
ドは失敗する([!] が与えられた場合は成功する。そのとき変更は破
棄される)。このバッファを表示しているどのウィンドウも閉じられ
る。バッファ
[N]
がカレントバッファの場合、他のバッファが代わり
に表示される。このバッファには、ジャンプリストの中のメモリ上に
ロードされているバッファを指し示している最も最近のエントリが使
用される。
:bunload[!]
{bufname}
":bunload[!]
[N]
" と同様だが、バッファを名前で指定する。数字が
名前になっているバッファは、その数字では参照されない。つまり、
バッファ番号として使用されてしまう。バッファ名中のスペースの前
にはバックスラッシュを入れる必要がある。
:
N
,Mbunload[!] ":bunload[!]" を
N
から M まで(
N
,Mを含む)の総てのバッファに対
して実行する。
:bunload[!] N1 N2 ...
":bunload[!]" をバッファN1、N2、等に対して実行する。引数には
バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使
用できる。バッファ名中のスペースの前にはバックスラッシュを入れ
る必要がある。
:
[N]
b[uffer][!]
[N]
*:b*
*:bu*
*:buf*
*:buffer*
*E86*
バッファリストのバッファ
[N]
を編集する。
[N]
が与えられなけれ
ば、そのままカレントバッファが編集される。 [!]については
|:buffer-!|
を参照。これはバッファリストにないバッファも
'buflisted'
フラグを設定することなく編集する。
:
[N]
b[uffer][!]
{bufname}
バッファリストの
{bufname}
のバッファを編集する。 [!]について
は
|:buffer-!|
を参照。これはバッファリストにないバッファも
'buflisted'
フラグを設定することなく編集する。
:
[N]
sb[uffer]
[N]
*:sb*
*:sbuffer*
ウィンドウを分割しバッファリストのバッファ
[N]
を編集する。
[N]
が与えられなければ、そのままカレントバッファが編集される。ウィ
ンドウ分割の際には、
'switchbuf'
の "useopen" の設定に従う。
これはバッファリストにないバッファも
'buflisted'
フラグを設定す
ることなく編集する。
Note
: 別名でカレントバッファのコピーを作って、それを別のウィン
ドウで表示したいのなら、次のようにすること:
:w foobar | sp #
:
[N]
sb[uffer]
{bufname}
ウィンドウを分割しバッファリストの
{bufname}
バッファを編集す
る。これはバッファリストにないバッファも
'buflisted'
フラグを設
定することなく編集する。
*:bn*
*:bnext*
:
[N]
bn[ext][!]
[N]
バッファリスト中の
[N]
個先のバッファへ移動する。
[N]
のデフォル
ト値は1である。バッファリストの最後に到達したら、先頭に戻って
バッファを探す。 [!]については
|:buffer-!|
を参照。
ヘルプバッファにいる場合、(もし有れば)次のヘルプバッファへ移動
する。同様に、通常の(ヘルプではない)バッファにいる場合、次の通
常のバッファへ移動する。従って、ヘルプウィンドウを表示していて
も、コード/テキストバッファを次々と表示する際にヘルプが邪魔に
ならない。次の3つのコマンドも同じように動作する。
*:sbn*
*:sbnext*
:
[N]
sbn[ext]
[N]
ウィンドウを分割しバッファリストの
[N]
個先のバッファへ移動す
る。バッファリストの最後に到達したら、先頭に戻ってバッファを探
す。ウィンドウ分割の際には、
'switchbuf'
の "useopen" 設定に従
う。
:
[N]
bN[ext][!]
[N]
*:bN*
*:bNext*
*:bp*
*:bprevious*
*E88*
:
[N]
bp[revious][!]
[N]
バッファリスト中の
[N]
個前のバッファへ移動する。
[N]
のデフォル
ト値は1である。バッファリストの先頭に到達したら、最後に戻って
バッファを探す。 [!]については
|:buffer-!|
を参照。
'switchbuf'
も参照。
:
[N]
sbN[ext]
[N]
*:sbN*
*:sbNext*
*:sbp*
*:sbprevious*
:
[N]
sbp[revious]
[N]
ウィンドウを分割しバッファリストの
[N]
個前のバッファへ移動す
る。バッファリストの先頭に到達したら、最後に戻ってバッファを探
す。ウィンドウ分割の際には、
'switchbuf'
の "useopen" 設定に従
う。
*:br*
*:brewind*
:br[ewind][!] バッファリスト中の先頭のバッファへ移動する。 [!]については
|:buffer-!|
を参照。
*:bf*
*:bfirst*
:bf[irst] ":brewind" と同じ。
*:sbr*
*:sbrewind*
:sbr[ewind] ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す
る。バッファリストが空の場合はリストされていない最初のバッファ
へ移動する。
'switchbuf'
オプションの設定に従う。
*:sbf*
*:sbfirst*
:sbf[irst] ":sbrewind" と同じ。
*:bl*
*:blast*
:bl[ast][!] バッファリスト中の最後のバッファへ移動する。 バッファリストが
空の場合はリストされていない最初のバッファへ移動する。'[!]につ
いては
|:buffer-!|
を参照。
*:sbl*
*:sblast*
:sbl[ast] ウィンドウを分割してバッファリスト中の最後のバッファへ移動す
る。バッファリストが空の場合はリストされていない最初のバッフ
ァへ移動する。
'switchbuf'
オプションの設定に従う。
:
[N]
bm[odified][!]
[N]
*:bm*
*:bmodified*
*E84*
バッファリスト中の
[N]
個先の編集中のバッファへ移動する。
注意:このコマンドはリストされていないバッファも見つける。変更
されているバッファがない場合はコマンドは失敗する。
:
[N]
sbm[odified]
[N]
*:sbm*
*:sbmodified*
ウィンドウを分割し、バッファリスト中の
[N]
個先の編集中のバッフ
ァへ移動する。
'switchbuf'
オプションの設定に従う。
注意:このコマンドはリストされていないバッファも見つける。
:
[N]
unh[ide]
[N]
*:unh*
*:unhide*
*:sun*
*:sunhide*
:
[N]
sun[hide]
[N]
バッファリスト中のメモリ上にロードされた各バッファに対して1つ
のウィンドウが開かれているようにスクリーンを再構成する。カウン
トが与えられたら、開くウィンドウの最大数となる。
:
[N]
ba[ll]
[N]
*:ba*
*:ball*
*:sba*
*:sball*
:
[N]
sba[ll]
[N]
バッファリスト中のメモリ上にロードされた各バッファに対して1つ
のウィンドウが開かれているようにスクリーンを再構成する。カウン
トが与えられたら、開くウィンドウの最大数となる。
'winheight'
も
開くウィンドウの数を制限する(
|:vertical|
が前に与えられている
ときは
'winwidth'
)。この時点では、Buf/Win Enter/Leave オートコ
マンドは新しいウィンドウに対して実行されない。ウィンドウに移動
したときにのみ実行される。
コマンド修飾子
|:tab|
をつけて実行すると、新しいウィンドウがそれ
ぞれ新しいタブで開く。ただしタブの個数は
'tabpagemax'
に制限され
る。
注: 上の総てのコマンドは他のバッファの編集を開始する。各バッファの
'readonly'
フラグは保存されている。 ":edit" コマンドと異なる点は、":edit" コマンドでは
ファイルが読まれた時点で
'readonly'
フラグが設定される点である。
==============================================================================
12. 特殊なバッファ
*special-buffers*
バッファがファイルのテキストを保持するのでなく、他の目的のために使われることも
ある。バッファの振る舞いを変更するためにいくつかのオプションを設定することが出
来る:
'bufhidden'
バッファがウィンドウに表示されなくなったときどうするか
'buftype'
どんな種類のバッファか
'swapfile'
バッファがスワップファイルを持つか
'buflisted'
バッファリストに現れるか
いくつかの有用なバッファの種類:
quickfix エラーリストやロケーションリストを保持するのに使われる。
|:cwindow|
と
|:lwindow|
を参照。このコマンドは
'buftype'
オプ
ションを "quickfix" にセット。これを変更してはならない。
'swapfile'
はオフ。
help ヘルプファイルを保持する。
|:help|
コマンドによってのみ作成され
る。ヘルプバッファを示すフラグは内部にあり、変更することは出来
ない。ヘルプバッファに対する
'buflisted'
オプションはリセット
される。
directory ディレクトリの内容を表示する。
|file-explorer|
プラグインで使わ
れる。このバッファは以下の設定で作成される:
:setlocal buftype=nowrite
:setlocal bufhidden=delete
:setlocal noswapfile
バッファ名はディレクトリの名前になり、
|:cd|
コマンドを使ったと
きは変更される。
scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても
保たれ、明示的に削除されなければならない。
設定は:
:setlocal buftype=nofile
:setlocal bufhidden=hide
:setlocal noswapfile
このバッファを識別するためにはバッファ名が使われる。ただし、そ
のためにはそのバッファに意味のある名前がついていなければならな
い。
*unlisted-buffer*
unlisted このバッファはバッファリストにない。通常の編集には使われず、
ヘルプファイルを表示するためや、ファイル名やマークを記憶するた
めに使われる。":bdelete" コマンドによってもこのオプションがセ
ットされる。それゆえ、このコマンドは完全にはバッファを削除しな
い。設定は:
:setlocal nobuflisted
vim:tw=78:ts=8:ft=help:norl:
top
-
main help file
Download (not html):
vimdoc.zip
Vim日本語ドキュメント
苦情は yukihiro.nakadaira@gmail.com まで。