*editing.txt* For Vim バージョン 8.1. Last change: 2019 Sep 27 VIMリファレンスマニュアル by Bram Moolenaar
1. はじめに | |edit-intro| |
2. ファイルの編輯 | |edit-a-file| |
3. 引數リスト | |argument-list| |
4. 書き込み | |writing| |
5. 書き込みと終了 | |write-quit| |
6. ダイアログ | |edit-dialogs| |
7. カレントディレクトリ | |current-directory| |
8. バイナリファイルの編輯 | |edit-binary| |
9. 暗號化 | |encryption| |
10. タイムスタンプ | |timestamps| |
11. ファイル檢索 | |file-searching| |
「Vim でファイルを編輯する」とは、以下のことを表します。
バッファを書き込まない限り、元のファイルは變更を受けないままで殘つてゐます。ファイルの編輯を始める (バッファにファイルを讀み込む) と、そのファイルの名前は「カレントファイル名」として記憶されます。これをカレントバッファの名前とも呼びます。コマンドラインでは "%" で表せます |:_%|。
カレントファイル名が既に存在したときは、前の方は「代替ファイル名」になります。これはコマンドラインでは "#" で表され |:_#|、|CTRL-^| を使ふとカレントファイルと代替ファイルを切り替へることができます。ただし |:keepalt| を使つたときは代替ファイル名は變はりません。代替ファイル名はウィンドウごとに記憶されます。
現在の代替ファイル名を變へずに {cmd} を實行します。
Note:
閒接的に呼び出されるコマンド (例へば函數によつて) は代替ファイル名を變へてしまふことに注意してください。
全てのファイル名はバッファリストに記憶されます。編輯 (例へば ":e filename
") や保存 (例へば ":w filename
") のためにファイル名を入力すると、そのファイル名がリストに追加されます。このリストを使へば、どのファイルを編輯したかを覺えておいたり、コマンド CTRL-^ によつてあるファイルから別のファイルへ素早く移行することができます (例へばテキストをコピーするとき)。まづファイルの番號を、次に CTRL-^ を打ち込みます。
カレントファイル名 (これは ":cd
" が使はれたとき以外は打ち込まれた通り {譯注: 普通、カレントディレクトリのファイルを編輯するときはパスを省いて打ち込むと思ひますが、さうするとパスなしのファイル名になります})、カーソル位置 (これはオプション ’ruler’ がオフのとき) とファイルの狀態 (讀込專用、變更あり、讀込エラー、新規ファイル) を表示します。このメッセージを短くする方法については、オプション ’shortmess’ を參照してください。
|:file| と同樣ですが、’shortmess’ が設定されてゐるときでも名前を切り詰めません。
CTRL-G と同樣ですが、カレントファイル名をフルパスで表示します。{count} が 2 以上なら、カレントバッファの番號も表示します。
カーソルの現在の位置を、列、行、單語、文字、バイト、の 5 種類の單位で表示します。文字數とバイト數が同じのときは文字位置が省略されます。
行の中に畫面上で 1 文字分以上の幅を占める文字 (<Tab> または特殊文字) があるときは、「實際」の列番號と畫面上の列番號の兩方が、ダッシュで區切られて表示されます {譯注: 例へば、タブ幅 ’tabstop’ が 8 のとき、行頭の <Tab> の次では「實際」の列番號は 2、畫面上の列番號は 9 となり、"1-8" と表示されます}。オプション ’ruler’ と |wordcount()| 函數も參照してください。
"g CTRL-G" と似てゐますが、單語、文字、行、バイトの項目はビジュアル選擇領域內で數へられて表示されます。矩形ビジュアルモードでは、何列目かも表示されます。
矩形ビジュアルモードでは桁數も表示されます ({Visual} については |Visual-mode| を參照してください。)
カレントファイル名を {name} に設定します。! をつけると |:file| のやうにメッセージを切り詰めなくなります。
バッファが名前を持つならその名前が代替ファイル名 |alternate-file| になります。元の名前を保持するためにリストされない (unlisted) バッファが作成されます。
カレントバッファの名前を削除します。! をつけると |:file| のやうにメッセージを切り詰めなくなります。
現在認識してゐるファイル名を全て一覽表示します。|windows.txt| |:files| |:buffers| |:ls| を參照してください。
Vim は入力したファイル名のフルパス名を記憶してゐます。ファイル名が表示されるとき、大抵は打ち込んだ名前だけが表示されますが、コマンド |:cd| でディレクトリを移動した後では、フルパス名が使はれます。
環境變數 $HOME
が設定されてゐて、ファイル名がその文字列で始まつてゐるなら、ファイル名のその部分は "~" に置き換へられて表示されます。これはファイル名を短くするためです。ファイルを讀み書きするときはフルパス名が使はれ、"~" はファイル名を表示するときだけに使はれます。ファイル名の置き換へを行つたところ "~" だけになつてしまふときは、代はりに "~/" が使はれます (オプション ’backupext’ が "~" に設定されたときに混亂を防ぐため)。
バッファを書き出すとき、既定ではカレントファイル名を用ゐます。そのため、コマンド "ZZ" や ":wq
" を使ふと、元のファイルは上書きされてしまふことになります。これを望まないなら、コマンド ":write
" の引數にファイル名を與へることで、バッファを別のファイルに書き出せます。例:
vim テスト用 {譯注: これはシェルに對して} [コマンドでバッファを編輯する] :w 新ファイル :q
かうすると "新ファイル" が生成されますが、これは "テスト用" を編輯してコピーしたものです。ファイル "テスト用" は變更されないまま殘ります。しかしどちらにしろ、オプション ’backup’ がオンのときは、Vim は元のファイルを上書きする前に、元のファイルの名前を變更するかコピーします。元のファイルが必要なことに氣づいたときは、このファイルを使へます。’patchmode’ も參照してください。
普通、バックアップファイルの名前は元のファイル名に ’backupext’ を追加したものになります。既定値は "~" といふ妙なものですが、これはたまたま存在してゐるファイルに上書きするのを避けるためなのです。".bak" の方がよければ、’backupext’ を變更してください。MS-DOS 機等で、MS-DOS 系のファイルシステム (例へば、messydos や crossdos ) が使はれてゐることが檢出されたときや、’shortname’ がオンのときには、餘分なドットは ’_’ に置き換へられます。’backupdir’ を設定することで、バックアップファイルを他のディレクトリに置くことができます。
技術的情報:
Amiga ではファイル名に 30 文字まで使へます。しかし MS-DOS 互換のファイルシステムで有效なのは 8 文字+ 3 文字に過ぎません。Vim は ".swp" ファイルを生成するときにファイルシステムの判別を試みます。MS-DOS 系のファイルシステムと思はれるときは、’shortname’ をオンにするのと同じ效果を持つフラグがオンになります。このフラグは新ファイルの編輯を開始するとすぐにオフにされます。このフラグはカレントファイルのための ".swp" ファイルと ".~" ファイルの名前を作るときに使はれます。しかし、ユーザーが普通のファイルシステムで編輯作業を行ひ、MS-DOS 系のファイルシステムに保存するときには、フラグはオンにはなりません。そのときは、".~" ファイルの生成が失敗してエラーメッセージが表示されます。そのときはオプション ’shortname’ を使つてくさだい。
ファイル名を指定せずに編輯を始めたときは、メッセージ欄に "[無題]" と表示されます。コマンド ":write
" がファイル名引數付きで使はれたときは、そのファイル名がカレントファイルのファイル名に設定されます。
かうなるのはフラグ ’F’ |cpo-F| がオプション ’cpoptions’ に含まれてゐるときだけです (既定では含まれてゐます)。これは空のバッファにテキストを入力してから、それをファイルに保存するときに便利です。
’cpoptions’ が ’f’ |cpo-f| を含んでゐるときは (既定では含まれて「いません」)、":read file
" でファイル名が設定されます。これは引數なしで Vim を起動してから、":read file
" でファイルの編輯を開始するときに便利です。
ファイル名が設定されてゐて ’filetype’ が空のとき、ファイルタイプ判別自動コマンドが發生します。
ファイル名が設定されるのはその名前のファイルの編輯を本當に始めるより前なので、そのファイルを誤つて上書きしないやうになつてゐます。これはフラグ "notedited" を設定することで可能になります。このフラグの狀態はコマンド CTRL-G か ":file
" で確認できます。フラグ "notedited" がオンのときは "[Not edited]" と表示されます。カレントファイルの名前でバッファ內容を書き出すとき (":w!
" で)、フラグ "notedited" はオフに設定されます。
Vim はバッファが變更されたかどうかを記憶してゐて、變更點が誤つて失はれないやうになつてゐます。保存せずに終了しようとしたり、別のファイルの編輯を開始しようとすると、Vim は拒否します。この保護を無效にするためには、コマンドに ’!’ を追加してください。この場合、變更は失はれます。例へばバッファの內容が變更されてゐるとき、":q
" は使へませんが ":q!
" は使へます。バッファの內容が變更されたかどうかを見るためにはコマンド CTRL-G を使つてください。バッファが變更されてゐたときは、メッセージに文字列 "[變更あり]"、’m’ フラグが ’shortmess’ のときは "+" が含まれます。
確認なしで變更を保存してほしいなら、オプション ’autowriteall’ をオンにしてください。關聯するオプションには ’autowrite’ がありますが、これは Vi 互換で、全てのコマンドに對して動作するわけではありません。
變更されたバッファを保存せずにそのままにしておきたいなら、オプション ’hidden’ をオンにしてください。|hidden-buffer| を參照してください。いくつかのコマンドは ’hidden’ がオンになつてゐなくてもこのやうに振る舞ふので、コマンドについてはヘルプを參照してください。
カレントファイルを開きます。これは Vim 外部でカレントファイルに變更が加へられたとき、開き直すのに便利です。カレントバッファに變更が加へられてゐるのに、オプション ’autowriteall’ がオフであるか、ファイルが書き込み可能でないときは、實行に失敗します。
どのやうな場合でもカレントファイルを開きます。カレントバッファに對する變更は全て失はれます。これは編輯作業をもう一度最初からやり直したいときに便利です。
{file} を開きます。
カレントバッファに變更が加へられてゐると實行に失敗します。ただしオプション ’hidden’ がオンであるときと、’autowriteall’ がオンであり、かつファイルが書き込み可能なときには實行できます。
どのやうな場合でも {file} を開きます。カレントバッファに對する變更は全て失はれます。
[count] 番目のバッファ (コマンド |:files| で表示されるもの) を開きます。このコマンドは [count] CTRL-^ と同じです。しかし代替バッファがファイル名を持たないと ":e #
" は機能しませんが、CTRL-^ はそのときも機能します。
無名のバッファの編輯を新規に開始します。カレントバッファに變更が加へられてゐると實行に失敗します。ただしオプション ’hidden’ がオンであるときと、’autowriteall’ がオンであり、かつファイルが書き込み可能なときには實行できます。
’fileformats’ の値が空でないとき、その先頭の形式が新バッファに適用されます。’fileformats’ の値が空のときは、カレントバッファの ’fileformat’ の値が使はれます。
無名のバッファの編輯を新規に開始します。カレントバッファに對する變更は全て失はれます。
オプション ’fileformat’ の値はコマンド |:enew| と同樣に設定されます。
オプション ’path’ 內のディレクトリから {file} を探し、それを編輯 |:edit| します。
{Vim が |+file_in_path| 機能付きでコンパイルされたときのみ有效}
コマンド ":find
" と同樣ですが、オプション ’path’ 內のディレクトリで {count} にマッチしたファイルを編輯します。つまり ":2find file
" とすると ’path’ 內で 2 番目に見つかつた "file" を編輯します。’path’ 內で見つかつたマッチが {count} より少ないと、エラーメッセージが表示されます。
|:edit| と同じです。
Ex モード內では: Ex モード (|Ex-mode|) からノーマルモードに戾ります。それ以外はコマンド |:edit| と同じです。
Ex モード內では: Ex モード (|Ex-mode|) からノーマルモードに戾ります。それ以外はコマンド |:edit| と同じですが、そのバッファに對してオプション ’readonly’ をオンにします。
代替ファイルを編輯します。たいていの場合、代替ファイルは前に編輯したファイルです。これを使ふと 2 つのファイル閒を素早く切り替へることができます。これは ":e #
" と同じですが、對象のファイル名が無い場合も機能します。
オプション ’autowrite’ か ’autowriteall’ がオンならば、バッファを移動するときに書き込みをします。
たいていは "^" と "6" は同じキーです。CTRL
を押しながら 6
のキーを押せば CTRL-^ を押したのと同じ效果を得られます。しかし英語排列でないキーボードでは他のキーが割り當てられます。
[count] 番目の代替ファイルを編輯します (コマンド ":e #[count]
" と同じ)。[count] が指定されないと、前に編輯したファイルを編輯します。これを使ふと 2 つ (かそれ以上) のファイル閒を素早く行き來できます。
さらに詳しくは上の |CTRL-^| を參照。
コマンド "gf" と同じです。推奬されません。
カーソルの下か後ろの名前のファイルを編輯します。覺え方: "goto file"。
オプション ’isfname’ により、どの文字がファイル名に使はれるはずなのかを調べます。ファイル名に續く句讀點の ".,:;!" は無視されます。エスケープされた複數のスペース "\ " は 1 つのスペースに減らされます。
’path’ により、ファイルを探すディレクトリ名のリストを調べます。カレントファイルに對して相對的なファイルも探されます。
’suffixesadd’ により、擴張子を補つたファイル名を調べます。 ファイルが見つからないと、’includeexpr’ によつてファイル名を修正し、再びファイルを探します。
[count] が指定されると、’path’ 內で見つかつた [count] 番目のファイルを編輯します。
Vim がカレントファイルの破毀 |abandon| を拒否したときは、このコマンドの實行は失敗します。
このファイルを新しいウィンドウで編輯したいときは |CTRL-W_CTRL-F| を使つてください。 新しいファイルを編輯したいなら次のやうにします。
:e <cfile>
どのやうな場合でもコマンド gf を機能させるには次のやうにします。
:map gf :e <cfile><CR>
カーソル下のファイル名が "type://machine/path" のやうなハイパーテキストリンクであるなら、プラグイン |netrw| が必要になります。
Unix では、文字 ’~’ は "~user/file" のやうに展開されます。環境變數も展開されます |expand-env|。
{Vimが |+file_in_path| 機能付きでコンパイルされたときのみ有效}
コマンド "gf" と同じですが、編輯するファイルの名前にはビジュアル選擇されたテキストが使はれます。オプション ’isfname’ の値は無視されます。先頭の空白は無視されますが、それ以外の空白や特殊文字はファイル名に含まれます。({Visual} については |Visual-mode| を參照してください。)
"gf" と同じですが、ファイル名の後に番號があるときは、その行へカーソルが移動する點が異なります。ファイル名と行番號は、ファイル名ではない文字 (’isfname’ を參照してください) かつ數字ではない文字で區切られてなければなりません。ファイル名、區切り文字、番號の閒の空白文字は無視されます。
例:
eval.c:10 eval.c @ 20 eval.c (30) eval.c 40
"v_gf" と同じです。
以上のコマンドは 1 つのファイルの編輯を開始するために使用されます。これはファイルがバッファに讀み込まれ、カレントファイル名が設定されることを意味します。開かれるファイルはカレントディレクトリに依存します。コマンド |:cd| を參照してください。
ファイルが讀み込まれた後に表示されるメッセージの說明については |read-messages| を參照してください。
バッファ內がめちやめちやになつて最初からもう 1 度やり直したいときには、コマンド ":e!
" が使へます。コマンド ":e
" が便利なのは、カレントファイル名を變更したときだけです。
ファイル名を指定する場所で使へる特殊なアイテムについては、この節で書かれてゐることの他に |cmdline-special| に書かれてゐます。
Note:
Unix と MS-DOS 以外に對する注意: 1 つのファイル名を受け付けるコマンド (":edit file
" 等) では、ファイル名に空白が入つてゐても構ひませんが、ファイル名末尾の空白は無視されます。これは、空白を含むファイル名が普通にあるシステム (MS-Windows, Amiga 等) では便利です。例: ":e Long File Name
" を實行すると、ファイル "Long File Name" を開きます。2 つ以上のファイル名を受け付けるコマンド ("
:next file1 file2
" 等) では、ファイル名內の空白は ’\’ でエスケープしなければなりません。
{file} 內のワイルドカードは展開されます。ただし、ファイル名補完と同樣に ’wildignore’ と ’suffixes’ が適用されます。使用できるワイルドカードの種類はシステムによつて異なります。標準的なものは以下です。
? | あらゆる 1 文字にマッチ |
* | 何もないのも含め、全てにマッチ |
** | 何もないのも含め、全てにマッチ。ディレクトリを再歸的にたどる。 |
[abc] | ’a’, ’b’ または ’c’ にマッチ |
ワイルドカードとしての特別な意味を無效にするには、前に ’\’ を置いてください。しかし MS-Windows では ’\’ がパスの區切り文字なので、オプション ’isfname’ の値に "[" が含まれてゐると、"path\[abc]" はワイルドカード扱ひになつてしまひます。これを避ける單純な方法は、"path\[[]abc]" とすることです。かうすると文字通りのファイル "path[abc]" を編輯できます。
"**" の展開は、Unix, Win32, Mac OS/X、その他數種類のシステムでのみ使用できます。"**" はディレクトリツリーを再歸的に檢索します。深さの上限は 100 ディレクトリです。
Note:
いくつかのコマンドでは、この擧動が少し異なることに注意してください。|file-searching| を參照してください。
例:
:n **/*.txt
これは次のファイルにマッチします:
aaa.txt subdir/bbb.txt a/b/c/d/ccc.txt
"**" の直前または直後にワイルドカード以外の文字が使用されてゐる場合、これらはトップディレクトリでのみマッチします。これらは、ツリーのさらに下のディレクトリには使用されません。例:
:n /usr/inc**/types.h
これは次のファイルにマッチします:
/usr/include/types.h /usr/include/sys/types.h /usr/inc/old/types.h
Note:
"/inc" とマッチする必要がないため、"/sys" を含むパスが含まれてゐることに注意してください。したがつて、"/usr/inc*/inc*/inc*" ではなく、"/usr/inc*/*/*..." にマッチするやうなものです。
Unix などではファイル名の引數にバッククォート ’‘’ も使へます。例:
:next `find . -name ver\\*.c -print` :view `ls -t *.patch \| head -n1`
Vim はバッククォート內のコマンドをシェルで實行し、その標準出力を Vim コマンドの引數とします (シェルからのエラーメッセージは破毀されます)。
Vim が何のシェルコマンドを實行してゐるのか確認するためには、’verbose’ オプションに 4 を設定します。シェルコマンドが 0 以外の終了コードを返した場合、エラーメッセージが表示され Vim コマンドは中斷されます。これを防ぐためには、次のやうにしてシェルが常に 0 を返すやうにします:
:next `find . -name ver\\*.c -print \|\| true`
アスタリスク ’*’ の前の ’\’ は、シェルが find を實行する前に "ver*.c" を展開してしまふのを防ぐために必要となります。シェルのパイプ記號 "|" の前のバックスラッシュは Vim がコマンドの終はりとしてパースするのを防ぎます。
これは、必ず項目全體がバッククォートで括られてゐるといふ制限付きで、他の多くのシステムでも機能します。最初のバッククォートの直前や最後のバッククォートの直後に文字列を書くことはできません。
バッククォート內を、外部コマンドとしてではなく Vim の式として展開させることもできます。そのためには初めのバッククォートのすぐ後に等號を置きます。例:
:e `=tempname()`
この式はほとんど何でも含むことができます。そのため、これを使つて ’"’, ’|’, ’%’, ’#’ の特別な意味を打ち消すこともできます。ただし、他のワイルドカードと同樣に ’wildignore’ は適用されます。
この式の中の環境變數は式が評價される時に展開されます。したがつてこれは機能します:
:e `=$HOME . '/.vimrc'`
これは機能しません。$HOME
は文字列內にあり、文字通りに用ゐられます:
:e `='$HOME' . '/.vimrc'`
式が文字列を返したときは名前は改行で區切られます。式の結果がリスト (|List|) のときは各要素が名前として扱はれます。改行によつても名前は區切られます。
Note:
そのやうな式はファイル名が Ex コマンドの引數として期待される場所でのみサポートされることに注意してください。
引數のうち [++opt] はオプション ’fileformat’, ’fileencoding’ または ’binary’ の値を、そのコマンドに限つてある値に指定し、不正な文字への對應を指定するために使はれます。指定の形式は次の通りです。
++{optname}
または
++{optname}={value}
{optname} は次のうちのどれかです:
ff または fileformat | ’fileformat’ を指定 |
enc または encoding | ’fileencoding’ を指定 |
bin または binary | ’binary’ を指定 |
nobin または nobinary | ’binary’ を無效にする |
bad | 不正な文字への對應を指定する |
edit | |:read| 用。ファイルを編輯するときと同じやうにオプションの値を保つ |
{value} に空白を含めてはいけません。値は、そのオプションに對して適切なものなら何でもよい。例:
:e ++ff=unix
かうすると ’fileformat’ を "unix" に設定して同じファイルを編輯し直します。
:w ++enc=latin1 newfile
かうするとカレントバッファの內容を latin1 の文字コードで "newfile" に書き出します。
空白で區切られた複數の [++opt] 引數になるかもしれません。それらはみな |+cmd| 引數よりも前に指定しなければなりません。
"++bad=" の引數は、變換できない文字と不正なバイトをどうするかを指定します。とりうる値は次の 3 つのうちどれかです:
++bad=X | 不正な文字をこの 1 バイト文字で置き換へる |
++bad=keep | 不正な文字を變換せずにそのままにしておく
|
++bad=drop | 不正な文字を削除する |
既定値は "++bad=?" のやうになつてゐます。つまり、不正な文字をそれぞれクエスチョンマーク ? で置き換へます。逆クエスチョンマーク ¿ (latin-1 の 0xBF) が使はれる場所もあります。
Note:
++bad をつけてエラーにならなかつたとしても、すべてのコマンドが ++bad に對應してゐるわけではないことに注意してください。例 |:write|。
Note:
讀み込み時に上の方法で ’fileformat’ と ’fileencoding’ を指定すると、それらは以後その値に設定されることに注意してください。書き込み時に設定してもさうはならず、次に書き込むときには以前の値が使はれます。’binary’ オプションも同樣です。
引數 [+cmd] は、新しく開いたファイルでカーソルの位置を指定したり、他のあらゆるコマンドを實行するために使はれます:
+ | 最後の行で編輯を開始する |
+{num} | {num} 行目で編輯を開始する |
+/{pat} | {pat} を含んだ最初の行で編輯を開始する |
+{command} | 新しいファイルを開いた後に {command} を實行する。{command} には任意の Ex コマンドが使へる |
{pat} や {command} に空白を含めるためには、その前に ’\’ を付けます。’\’ そのものを使ふには 2 回ずつ繰り返してください。
:edit +/The\ book ファイル :edit +/dir\ dirname\\ ファイル :edit +set\ dir=c:\\\\temp ファイル
Note:
最後の例では ’\’ の繰り返しが 2 回行はれてゐることに注意してください。"+cmd" の引數なので 1 回、コマンド ":set
" のためにもう 1 回です。
オプション ’fileformat’ はファイルに對して <EOL> の形式を設定します:
’fileformat’ | <EOL> の文字 | 形式の名稱 |
---|---|---|
"dos" | <CR><NL> または <NL> | DOS 形式 |
"unix" | <NL> | Unix 形式 |
"mac" | <CR> | Mac 形式 |
以前はオプション ’textmode’ が使はれてゐました。現在ではそれはもはや使はれてゐません。
ファイルを讀み込むときに、上で述べた文字は <EOL> として解釋されます。DOS 形式 (MS-DOS、OS/2 と Win32 での既定値) では、<CR><NL> と <NL> の兩方が <EOL> と解釋されます。
Note:
DOS 形式でファイルを保存するときには、<NL> 1 個ごとに對して <CR> が追加されることに注意してください。|file-read| も參照してください。
ファイルを書き込むときには、上で述べた文字が <EOL> として使はれます。DOS 形式では <CR><NL> が使はれます。|DOS-format-write| も參照してください。
DOS 形式でファイルを讀み込んで、Unix 形式でそれを保存することも可能です。(’fileformats’ が "dos" を含んでゐると假定すると) 以下の操作は全ての <CR><NL> を <NL> で置き換へることになります。
:e ファイル :set fileformat=unix :w
(’fileformats’ の値に "unix" が含まれてゐるとき) Unix 形式でファイルを讀み込んで、DOS 形式で保存すると、<NL> は全て <CR><NL> で置き換へられます。
:e ファイル :set fileformat=dos :w
新しいファイルの編輯を開始したときオプション ’fileformats’ の値が空でないなら (それがデフォルト)、Vim はファイルが指定された形式で改行されてゐるかどうか檢出を試みます。値が "unix,dos" であるときは、Vim は 1 個の <NL> (Unix と Amiga 形式) か <CR><NL> の組 (MS-DOS 形式) が使はれるものとして行を調べます。全ての行が <CR><NL> で終はつてゐるときだけ、’fileformat’ の値は "dos" に設定され、さうでなければ "unix" に設定されます。’fileformats’ の値が "mac" を含んでゐて、ファイルに <NL> が 1 個も見つからないときは、’fileformat’ の値は "mac" に設定されます。
’fileformat’ の値が MS-DOS 以外のシステム上で "dos" に設定されると、普通でないことが起きてゐることを氣づかせるために、メッセージ "[dosフォーマット]" が表示されます。’fileformat’ の値が "unix" であると、MS-DOSシステムでは "[unixフォーマット]" のメッセージが表示されます。’fileformat’ の値が "mac" であると、Macintosh 以外の全てのシステムでは、メッセージ "[macフォーマット]" が表示されます。
オプション ’fileformats’ の値が空で、DOS 形式が使用されてゐるけれども、ファイルを讀み込んでゐるときにいくつかの行が <CR><NL> で終はつてゐなかつたならば、ファイルのメッセージ內に "[CR無]" が含まれます。
’fileformats’ の値が空で、Mac 形式が使用されてゐるけれども、ファイルを讀み込んでゐるときに <NL> が見つかつたならば、ファイルのメッセージ內に "[NL無]" が含まれます。
新しいファイルが存在しないと、’fileformats’ の値が空のときにはカレントバッファの ’fileformat’ の値が使はれます。さうでなければ、’fileformats’ 內の 1 番目の形式が新しいファイルに對して用ゐられます。
實行可能ファイルやバイナリファイル、Vim script ファイルを編輯する前には、オプション ’binary’ をオンに設定するべきです。これにはオプション "-b" を付けて Vim を起動するのが簡單です。かうすると ’fileformat’ が使はれなくなります。こうしないと 1 個の <NL> が不意に <CR><NL> で置き換へられてしまふことを覺悟しなければなりません。
オプション ’key’ をオンに設定することで、保存されるファイルを暗號化できます。これは他人がユーザーのファイルを讀むことに對して、ある程度の安全を保證します。|encryption|
Vim の開始時に複數のファイル名を與へると、それらは引數リストとして記憶されます。リスト內のファイルにはどれでも移動できます。
これをコマンド |:buffers| で表示されるバッファリストと混同してはいけません。引數リストは Vi から既にありましたが、バッファリストは Vim で新たに導入されました。引數リスト內のファイルはバッファリストにも含まれます (コマンド |:bdel| や |:bwipe| で消去されない限り)。逆にバッファリスト內のファイルが引數リストに含まれないことは普通にあります。
この話題はユーザーマニュアルの第 |07.2| 章で紹介されてゐます。
グローバルな引數リストが 1 個あり、これは既定では全てのウィンドウに使はれます。ウィンドウについてローカルな引數リストを新たに創ることもできます。|:arglocal| を參照してください。
引數リストは以下のコマンド及び expression 用函數 |argc()| と |argv()| で利用することができます。これらはみなカレントウィンドウの引數リストに對して働きます。
引數リストを表示します。カレントファイルは ’[’ ’]’ で挾まれて表示されます。
{arglist} を新たな引數リストとして定義し、そのうち最初のファイルの編輯を始めます。變更點があり、Vim がカレントバッファを抛棄 |abandon| したくないときには失敗します。
{arglist} を新たな引數リストとして定義し、そのうち最初のファイルの編輯を始めます。カレントバッファに對する變更點は全て失はれます。
引數リストに {name}s を追加し、その編輯を始めます。{name} が既に引數リスト內にあるときは、その編輯を始めます。これはコマンド |:argadd| を使ひ、次に |:edit| を使ふのと同じです。
ファイル名中のスペースは "\" でエスケープされなければなりません。
[count] は |:argadd| と同樣に使はれます。
もしもカレントファイルが抛棄 |abandon| することができないなら、編輯されてゐないことを除いて、引數リストに {name}s が加へられます。複製の終了はチェックしません。
引數リストに {name} を追加します。{name} が省略された時は引數リストに現在のバッファ名を追加します。 [count] が省かれると {name} は引數リストの現在の項目の次に插入されます。指定されると [count] 番目の項目の次に插入されます。引數リストが "a b c" で "b" が現在の引數の場合のコマンドの結果一覽:
コマンド | 新たな引數リスト |
---|---|
:argadd x | a b x c |
:0argadd x | x a b c |
:1argadd x | a x b c |
:$argadd x | a b c x |
最後の 1 つの後に:
:+2argadd y | a b c x y |
重複檢査はないので、1 個のファイルを引數リストに 2 回加へることもできます。現在編輯中のファイルは變更されません。
Note:
次の方法が使へることに注意してください。:args ## xこれは項目 "x" を追加して新たなリストを竝び替へます。
{pattern} にマッチするファイルを引數リストから削除します。{pattern} の意味はファイルパターンと同樣なので、|file-pattern| を參照してください。現在の項目を削除するには "%" が使へます。
このコマンドは現在編輯中のファイルが引數リストから削除されたときでも、それをそのままに保ちます。
例:
:argdel *.obj
引數リストから {range} の範圍のファイルを削除します。
例:
:10,$argdel
10 以降が削除され、1 から 9 は殘ります。
:$argd
最後の引數を削除します。
:argd :.argd
現在の引數を削除します。
:%argd
引數リストから全てのファイルを削除します。範圍の上限が大きすぎるときは、最後の引數までが削除されます。
引數リスト內で [count] 番目のファイルを編輯します。[count] が省かれると現在の項目を編輯します。變更點があり、Vim がカレントバッファを抛棄 |abandon| したくないときには失敗します。
引數リスト內で [count] 番目のファイルを編輯します。カレントバッファに對するいかなる變更も失はれます。[count] が省かれると現在の項目を編輯します。
引數リストの中で [count] 個次のファイルを編輯します。變更點があり、Vim がカレントバッファを抛棄 |abandon| したくないときには失敗します。
引數リストの中で [count] 個次のファイルを編輯します。カレントバッファに對するいかなる變更も失はれます。
コマンド |:args_f| と同じです。
コマンド |:args_f!| と同じです。
引數リストの中で [count] 個前のファイルを編輯します。變更點があり、Vim がカレントバッファを破毀 |abandon| したくないときには失敗します。
引數リスト內で [count] 個前のファイルを編輯します。カレントバッファに對するいかなる變更も失はれます。
コマンド |:Next| と同じです。
引數リスト內で最初のファイルの編輯を始めます。變更點があり、Vim がカレントバッファを抛棄 |abandon| したくないときには失敗します。
引數リスト內で最初のファイルを編輯します。カレントバッファに對するいかなる變更も失はれます。
コマンド |:rewind| の別名。
引數リスト內で最後のファイルの編輯を始めます。變更點があり、Vim がカレントバッファを抛棄 |abandon| したくないときには失敗します。
引數リスト內で最初のファイルを編輯します。カレントバッファに對するいかなる變更も失はれます。
カレントファイルを書き込み、引數リスト內で [count] 個次のファイルの編輯を始めます。
カレントファイルを {file} に書き込み、引數リスト內で [count] 個次のファイルの編輯を始めます。ただし {file} が既に存在し、オプション ’writeany’ がオフのときは失敗します。
カレントファイルを {file} に書き込み、引數リスト內で [count] 個次のファイルの編輯を始めます。
コマンド |:wnext| と同じですが、次でなく前のファイルに移ります。
上のコマンドの [count] の既定値は 1 です。[count] を 2 回使へるコマンドもあります。最後 (最も右) のものが使はれます。
引數 [+cmd] が存在しないなら、カーソルはそのファイルに對して最後に認識された位置に置かれます。オプション ’startofline’ がオンのときは、カーソルは行の最初の非空白文字に置かれ、オフのときは最後に認識された列が使はれます。最後に認識されたカーソル位置がないときは、カーソルは最初の行 (Ex モードでは最後の行) に置かれます。
引數リスト內のワイルドカードは展開され、ファイル名は竝び替へられます。ですから C のソースファイルを全て編輯するには、コマンド "vim *.c" が使へます。Vim の中でコマンド ":n *.c" としても同じです。
ファイル名は空白文字によつて區切られます。ファイル名にスペースまたはタブを含めるには、その前にバックスラッシュを書いてください。例へば、"foo bar" といふ 1 つのファイルを開くにはこうします:
:next foo\ bar
Unix およびその他いくつかのシステムではバッククォートも使へます。例:
:n `find . -name \\*.c -print`
アスタリスクの前の ’\’ は、"*.c" がプログラム find を實行する前にシェルで展開されるのを防ぐために必要となります。
引數リストがあるときは、ウィンドウのタイトル (それがあつて、オプション ’title’ オンならば) やコマンド CTRL-G で出るファイルメッセージで編輯してゐるファイルを知ることができます。次のやうなものが表示されるでせう。
(file 4 of 11)
オプション ’shortmess’ の値が ’f’ を含んでゐるときは以下のやうになります。
(4 of 11)
實際は引數リスト內の現在の位置でないファイルを編輯してゐるなら、以下のやうになります。
(file (4) of 11)
これは、引數リストの中の 4 番目にゐるけれども、編輯中のファイルは引數リストの中の 4 番目でないことを意味します。これは ":e file
" をするときに起こります。
グローバルな引數リストのローカルなコピーを作ります。別のファイルの編輯は始めません。
カレントウィンドウについてローカルな、新たな引數リストを定義します。ウィンドウが 1 個のときは |:args_f| と同じです。
カレントウィンドウにグローバルな引數リストを使ひます。別のファイルの編輯は始めません。
カレントウィンドウにグローバルな引數リストを使ひます。コマンド |:args_f| と同樣、グローバルな引數リストを新たに定義します。グローバルな引數リストを使つてゐるウィンドウは全てこの新しいリストを參照するやうになります。
複數の引數リストが存在可能であり、それらはウィンドウ同士で共有できます。共有されてゐるときは、あるウィンドウ內で引數リストに變更を加へると、別のウィンドウの引數リストも影響を受けます。
ウィンドウが分割されると、新しいウィンドウはカレントウィンドウから引數リストを受け繼ぎます。すると 2 個のウィンドウは、片方でコマンド |:arglocal| か |:argglobal| を使つて別の引數リストを使ふやうになるまで、そのリストを共有することになります。
引數リスト內の全てのファイルで {cmd} を實行します。または [range] が指定された場合、その範圍內の引數のみで實行します。以下と同樣の動作になります。
:rewind :{cmd} :next :{cmd} etc.
カレントファイルを抛棄 |abandon| できず、’!’ も付けられてゐないときは、實行は失敗します。どれかのファイル內でエラーが檢出されると、引數リスト內の以降のファイルには進みません。 引數リスト末尾のファイル (またはエラーの起きたファイル) がカレントファイルになります。{cmd} の中では ’|’ で複數のコマンドを連結できます。{cmd} は引數リストに變更を加へてはいけません。
Note:
このコマンドの實行中、オプション ’eventignore’ で自動コマンドのイベント Syntax を指定することでそれを無效化することができます。かうすると各ファイルの處理がかなり高速になります。
|:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|, |:lfdo| も參照してください。
例:
:args *.c :argdo set ff=unix | update
かうするとオプション ’fileformat’ の値を "unix" に設定し、變更があつたファイルを保存します。それが全ての *.c ファイルについて行はれます。
例:
:args *.[ch] :argdo %s/\<my_foo\>/My_Foo/ge | update
かうすると全ての *.c ファイルと *.h ファイルで單語 "my_foo" を "My_Foo" に變へます。コマンド ":substitute
" でフラグ "e" を使つて "my_foo" といふ單語の使はれてゐないファイルでエラーが起きるのを防いでゐます。コマンド ":update
" は變更のあつたファイルのみを保存します。
Note:
オプション ’write’ がオフのときは、どのファイルも書き込めないことに注意してください。
バッファ全體をカレントファイルに書き込みます。これはファイルに對する變更點を保存するときの普通の方法です。オプション ’readonly’ がオンであるかファイルに書き込めない理由が何かあるときには實行に失敗します。
++opt については |++opt| を參照してください。ただし ++bin, ++nobin, ++ff, ++enc だけが有效です。{譯注: 他に ++bad, ++edit もあるけれど、この 2 つは :w
のオプションに使へないといふこと}
":write
" と似てゐますが、’readonly’ がオンであつたり書き込みが拒否される理由があつても無理矢理書き込みを行ひます。
Note:
これはファイルの權限や所屬を變更したり、(シンボリック) リンクを途切れさせるかもしれないことに注意してください。それを避けるには ’cpoptions’ にフラグ ’W’ を追加してください。
指定された範圍の行をカレントファイルに書き出します。これは普通の操作ではありません。ファイルがバッファ內の全ての行を含むやうにならないからです。
指定された範圍の行をファイル {file} に書き出します。ただしそれが既に存在し、かつオプション ’writeany’ がオフのときは失敗します。
指定された範圍の行をファイル {file} に書き出します。既存のファイルは上書きされます。
指定された範圍の行をカレントファイルに追加します。
指定された範圍の行をファイル {file} に追加します。’!’ を付けるとそのファイルがまだ存在しなくても書き込みを行ひます。
[range] の行を標準入力として {cmd} を實行します (’!’ の前の空白に注意)。{cmd} は ":!{cmd}" のやうに實行され、全ての ’!’ は前囘のコマンドに置き換へられます |:!。
コマンド ":w
" での [range] の既定値はバッファ全體 (1,$) です。バッファ全體を書き込むと、そのバッファは變更されてゐないとみなされるやうになります。
":w somefile
" によつて別のファイルに書き出した場合は、’cpoptions’ の "+" フラグに依存します。"+" が含まれてゐる場合は、バッファがまだ元のファイルと異なつてゐたとしても、書き込みコマンドによつて ’modified’ フラグがオフになります。
":w
" にファイル名が與へられるとそれが代替ファイルになります。これは例へば書き込みに失敗した後に ":w #
" でもう一度試したいときに使へます。オプション ’cpoptions’ からフラグ ’A’ を取り除くとこれを無效化できます。
Note:
書き込みには ’fsync’ オプションが關係してきます。設定されてゐる場合には書き込みがより遲くなるかもしれません。(しかしより安全です。)
カレントファイルをファイル名 {file} として保存し、カレントバッファのファイル名を {file} に變へます。それまでのカレントファイルの名前は代替ファイルの名前になります。既存のファイルを上書きするには [!] が必要になります。
’filetype’ が空の場合、保存の前に新しいファイル名に對してファイルタイプ檢出が行はれます。保存が成功すると ’readonly’ がオフになります。
":write
" と似てゐますが、バッファに變更點があるときのみ書き込みを行ひます。
變更點のあるバッファを全て書き込みます。ファイル名を持たないバッファに對してはエラーメッセージが表示されます。讀み込み專用のバッファは書き込まれません。
變更點のあるバッファを、讀み込み專用であつても全て書き込みます。ファイル名を持たないバッファは書き込まれず、エラーメッセージが表示されます。
Vim は別の場所で變更を受けたファイルを上書きしようとしたときには警告します。|timestamp| を參照してください。
オプション ’backup’, ’writebackup’ または ’patchmode’ がオンのときに既存のファイルに (追加でなく) 書き込まうとすると、元のファイルのバックアップが作られます。ファイルは元のコピーかリネームしたものです (’backupcopy’ を參照してください)。ファイルの書き込みに成功したとき ’writebackup’ がオンで ’backup’ がオフだと、バックアップファイルは削除されます。’patchmode’ がオンのときはバックアップファイルはリネームされるかも知れません。
’backup’ | ’writebackup’ | 動作 |
off | off | バックアップは作られない |
off | on | カレントファイルをバックアップし、後で消去する (既定) |
on | off | 古いバックアップを消去し、カレントファイルをバックアップする |
on | on | 古いバックアップを消去し、カレントファイルをバックアップする |
’backupskip’ に指定したパターンが書き込まれるファイルの名前にマッチしたときは、バックアップファイルは作られません。その場合 ’backup’ と ’writebackup’ の値は無視されます。
’backup’ がオンのときは、古いバックアップファイル (新しいバックアップファイルと同名) は削除されます。’backup’ がオフだが ’writebackup’ がオンのときは、既存のバックアップファイルは削除されません。ファイルの書き込み中に作られたバックアップファイルは別の名前になります。
ファイルシステムによつてはクラッシュで新しいファイルとバックアップを兩方失ふこともあり得ます (新しいファイルは存在はしても中身が滅茶苦茶になつてゐたり)。その場合は復歸機能を試してください。スワップファイルがまだディスクに殘つてゐるかもしれないからです。|:recover|
オプション ’backupdir’ で指定されたディレクトリはバックアップファイルをしまふのに使はれます。(既定値: 書き込まれたファイルと同じディレクトリ)
バックアップが、元のファイルのコピーである新規のファイルになるか、元のファイルがリネームされたものになるかは、オプション ’backupcopy’ で決まります。コピーが作られるのがいつでファイルがリネームされるのがいつかについてはその箇所を參照してください。
バックアップファイルの生成に失敗すると、書き込みは行はれません。それでも書き込みたいときにはコマンドに ’!’ を追加してください。
新しいファイルを書き込むときは讀み書きの權限が付きます。unix ではマスクの値は 0666 に umask を適用させたものになります。Vim で開いたファイルに書き込むときは權限は維持されますが、s ビットはクリアされます。
オプション ’cpoptions’ の値にフラグ ’W’ が含まれるときは、Vim は讀み込み專用ファイルの上書きを拒否します。’W’ が含まれないと、システムが許可すれば (ディレクトリは書き込み可能でなければなりません) ":w!
" は讀込專用ファイルを上書きします。
新ファイルの書き込みに失敗したときは、變更點と元のファイルを同時に失はないよう注意しなければなりません。バックアップファイルがないときに書き込みに失敗すると、その時點で元のファイルはなくなつてゐるのです!ファイルを書き出すまで Vim を終了してはいけません! バックアップが作られてゐたら、(可能ならば) それが元のファイルの所に戾されます。Vim を終了して變更點が失はれても、大抵は元のファイルはそこに殘つてゐます。Vim が元のファイルを戾すのに失敗すると、元のファイルが失はれた旨のエラーメッセージが出ます。
オプション ’fileformat’ の値が "dos" のときは、<EOL> には <CR> <NL> が使はれます。これは MS-DOS, Win32 と OS/2 での既定値です。その他のシステムでは "[dos format]" といふメッセージが表示され、普通でない <EOL> が使はれてゐることを知らせてくれます。 ’fileformat’ の値が "unix" のときは、<EOL> には <NL> が使はれます。MS-DOS, Win32 と OS/2 では "[unix format]" といふメッセージが表示されます。 ’fileformat’ の値が "mac" のときは、<EOL> には <CR> が使はれます。Mac 以外のシステムでは "[mac format]" といふメッセージが表示されます。
|file-formats| やオプション ’fileformat’ 及び ’fileformats’ も參照してください。
ACL は Access Control List を表します。これはファイルのアクセス權を制禦するための先進的な手段です。新しい MS-Windows と Unix システムで使はれますが、ファイルシステムがそれをサポートするときのみです。
Vim はファイルを書き込むときに ACL 情報を保たうとします。バックアップファイルは元のファイルの ACL 情報を受け繼ぎます。
ACL 情報は (ファイルを開くときに) ファイルが讀込專用かどうか調べるのにも使はれます。
MS-Windows がネットワーク上でドライブを共有するとき、そこは讀込專用にすることができます。つまりファイルに讀込專用の屬性がなく、NC ネットワーク共有ドライブ上の ACL 設定が書き込みを許可してゐても、そのファイルには書き込みができません。Win32 プラットフォーム上の Vim は讀込專用のネットワークドライブを判別し、ファイルを讀込專用とマークします。そのファイルは |:write| で上書きすることができません。
ファイル名が實際はデバイス名のとき、Vim はバックアップを作らうとはしません (無理な話)。デバイスは既に存在するので、保存にはフラグ "!" が必要です。
Unixでの例:
:w! /dev/lpt0
MS-DOS や MS-Windows での例:
:w! lpt0
Unix では、ファイル名が通常ファイルやディレクトリを指してゐないときにデバイスと判斷されます。Vim は fifo 及び名前付きパイプもデバイスと判斷します。
MS-DOS と MS-Windows では、デバイスは名前から判斷されます:
AUX CON CLOCK$ NUL PRN COMn n=1,2,3... 等 LPTn n=1,2,3... 等
ファイル名は大文字でも小文字でもよい。
カレントウィンドウを閉ぢます。最後のウィンドウで使ふと Vim を終了させます。變更點があつて Vim がカレントバッファを抛棄 |abandon| しようとしないときや、引數リストの最後のファイルが編輯されてゐないときは失敗します。
他のタブページが存在するとき、カレントタブページ內の最後のウィンドウを閉ぢるとカレントタブページ |tab-page| が閉ぢられます。
|QuitPre| 自動コマンドイベントが發行されます。
他のウィンドウを終了するには |CTRL-W_q| を參照してください。
終了しますが、變更點があるときや、引數リスト內で末尾にないファイルを編輯してゐるときにはプロンプトを表示します。コマンド |:confirm| やオプション ’confirm’ を參照してください。
現在のバッファに變更點があつても、書き込まずに Vim を終了します。バッファは、’hidden’ が設定されてゐるときにも讀み込まれません。
そのウィンドウが最後の 1 つで、變更點のある隱しバッファがある場合には、終了せずにカレントバッファを破毀したあとで、最初の變更點がある隱しバッファを新たな現在のバッファとします。
必ず終了するにはコマンド ":qall!
" を使つてください。
書き込みをせずに必ず終了し、エラーコードを返します。コマンド |:cq| を參照してください。Manx の QuickFix モードで使はれます (|quickfix| を參照してください)。
カレントファイルを書き込んで Vim を終了します。ファイルが讀込專用であるときや、バッファに名前が付いてゐないときには書き込みに失敗します。引數リスト內の末尾のファイルがまだ編輯されてゐないときには終了に失敗します。
カレントファイルを書き込んで Vim を終了します。バッファに名前が付いてゐないときには書き込みに失敗します。
{file} に書き込んで Vim を終了します。引數リスト內の末尾のファイルがまだ編輯されてゐないときには終了に失敗します。
{file} に書き込んで Vim を終了します。
上と同樣ですが、[range] の範圍內の行のみを書き込みます。
|:wq| と似てゐますが、變更點があるときのみ書き込みます。オプション ’hidden’ がオンで複數のウィンドウが存在するとき、ファイルを書き込んだ後はカレントバッファは隱れバッファになります。
|:xit| と同じです。
變更點があればカレントファイルを書き込んで Vim を終了します (コマンド |:x| と同じです)。
Note:
カレントファイルを複數のウィンドウで開いてゐるときは、ファイルに變更點があれば書き込まれ、そしてウィンドウが閉ぢられることに注意してください。
變更點を確かめずに終了します (コマンド ":q!
" と同じです)。
變更點のあるバッファがない限り、Vim を終了します (變更點のある次のバッファに移動するにはコマンド ":bmod
" を使つてください)。オプション ’autowriteall’ がオンのときは、|:wqall| と同樣に變更點のあるバッファが全て書き込まれます。
Vim を終了します。變更點のあるバッファがあるときはプロンプトを表示します。コマンド |:confirm| を參照してください。
Vim を終了します。バッファの變更點は全て失はれます。
終了コードを非ゼロにしたい場合は |:cquit| を使つてください。
コマンド |:qall| と同じです。
變更點のあるバッファを全て書き込んで Vim を終了します。ファイル名のないバッファや讀込專用または何らかの理由で書き込めないバッファ、またはジョブが實行中の端末があるときは、Vim を終了しません。
變更點のあるバッファを全て書き込んで Vim を終了します。讀込專用または何らかの理由で書き込めないバッファがあるときは、プロンプトを表示します。コマンド |:confirm| を參照してください。
變更點のあるバッファを、讀込專用であつても全て書き込んで Vim を終了します。ファイル名のないバッファや何らかの理由で書き込めないバッファがあるとき、もしくは、ジョブが動作してゐるターミナルがあるときは、Vim を終了しません。
{command} を實行する際、確認が必要ならばダイアログを表示します。コマンド |:q|, |:qa| や |:w| あるいは、|:only|, |:buffer|, |:bdelete| など、同樣に失敗しうるコマンドと共に使へます (|:w| では讀み取り專用屬性を無視するかどうかを尋ねます)。
例:
:confirm w foo
ファイル "foo" が既に存在するときに確認を取ります。
:confirm q
バッファに修正個所があるときに確認を取ります。
:confirm qa
修正個所があり、保存されてゐないバッファがあるとき、各バッファについて保存するか破毀するか尋ねます。「全て保存」や「全て破毀」といふ選擇肢もあります。
常に ":confirm
" を使ひたいなら、代はりにオプション ’confirm’ をオンにしてください。
{command} の引數のためにファイル選擇ダイアログを開きます。現在の所、これらのコマンドと共に使へます |:e|, |:w|, |:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|, |:view|, |:sview|, |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|, |:mksession|, |:mkview|, |:split|, |:vsplit|, |:tabe|, |:tabnew|, |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|, |:diffsplit|, |:diffpatch|, |:open|, |:pedit|, |:redir|, |:source|, |:update|, |:visual|, |:vsplit|, ’confirm’ がオンのときは |:qall| も使へます。
{Vim の Win32 版, Motif, Athena, GTK や Mac の GUI 版でのみ利用可能}
":browse
" が使へない時はエラーが表示されます。|+browse| の機能がなかつたり、{command} が :browse
に對應してゐない場合、{command} はダイアログなしで實行されます。":browse oldfiles
" については |:oldfiles| を參照してください。
使用法については、例をいくつか見るのが一番分かりやすいでせう。
:browse e $vim/foo
ファイル選擇ダイアログをディレクトリ $vim/foo 內で開き、選擇されたファイルを編輯します。
:browse e
ファイル選擇ダイアログを ’browsedir’ で指定されたディレクトリ內で開き、選擇されたファイルを編輯します。
:browse w
ファイル選擇ダイアログをカレントファイルのディレクトリ內で、カレントファイルの名前を既定値として開き、選擇されたファイル名を使つてバッファを保存します。
:browse w C:/bar
ファイル選擇ダイアログをディレクトリ C:/bar 內で、カレントファイルの名前を既定値として開き、選擇されたファイル名を使つてバッファを保存します。
オプション ’browsedir’ も參照してください。
Vim のファイル選擇ダイアログをサポートしないバージョンでは、コマンドはそのまま實行されます。
MS-Windows と GTK では、ファイル選擇ダイアログで使はれるフィルタを指定することができます。グローバル變數 g:browsefilter かローカル變數 b:browsefilter を設定すると、フィルタをグローバルにまたはバッファについてローカルに變更することができます。この變數を指定する際の書式は "{filter label}\t{pattern};{pattern}\n" で、{filter label} はコンボボックス「ファイルの種類」に使はれるテキスト、{pattern} はファイル名を選別するフィルタです。’;’ で區切れば複數のパターンを指定することができます。
Motif 上の Vim では同じ書式が使へますが、實際には 1 番目のパターンだけが使はれます (Motif ではパターンは 1 種類しか使へませんが、それをユーザーが編輯できます)。
例へばダイアログで Vim 關聯ファイルだけを表示するには、以下のコマンドを使ひます。
let g:browsefilter = "Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n"
フィルタは、變數 b:browsefilter を設定することでバッファ每に設定することができます。b:browsefilter はファイルタイププラグインで設定することが一番多いでせう。するとファイルブラウザーダイアログには現在編輯中のファイルのタイプに關聯した候補が表示されます。
弊害:
別の種類のファイルの編輯が始め辛くなります。對策は、フィルタの最後の項目に "All Files\t*.*\n" を加へ、ユーザーが望みのファイルにアクセスできる道を殘すことです。
Vim が browsefilter をサポートしてゐないときにそれを設定しないやうにするには、has("browsefilter") が使へます:
if has("browsefilter") let g:browsefilter = "whatever" endif
|:cd|, |:lcd| や |:tcd| コマンドを使つて別のディレクトリに移ることができます。すると {譯注: そのディレクトリ內のファイルを編輯するとき} そのディレクトリ名をファイル名の前に付けなくても良くなります。また、違ひは ":!ls
" 等の外部コマンドの實行の際にも現れます。
’cpoptions’ にフラグ ’.’ が含まれてゐる場合、カレントバッファが變更されてゐると、"!" をつけない限りディレクトリ變更は失敗します。
Unix 以外のシステムでは: カレントディレクトリ名を表示します。Unix システムでは: カレントディレクトリをホームディレクトリに變更します。全てのシステムで、カレントディレクトリの表示にはコマンド |:pwd| が使へます。
Unix システムでは: ウィンドウローカルディレクトリを消去します。
カレントディレクトリを {path} に變更します。{path} が相對的な指定なら、オプション ’cdpath’ 內に列擧されたディレクトリを基準に判斷されます。
ウィンドウローカルディレクトリを消去します。
既に開かれたファイルについては、フルパスが把握されてゐるので變化はありません。しかし引數リスト |arglist| 內のファイルの意味は變はるかもしれません!
MS-DOS ではアクティブなドライブも變更します。カレントファイルのディレクトリに移るにはこうします。
:cd %:h
前のカレントディレクトリ (前にコマンド ":cd {path}
" で移つた所) に移動します。
コマンド |:cd| と同じです。
|:cd| と似てゐますが、カレントタブページのディレクトリを設定するだけです。カレントウィンドウもこのディレクトリを使用します。カレントディレクトリは、他のタブページ內のウィンドウやカレントタブページ內のウィンドウ固有のウィンドウローカルディレクトリに對しては變更されません。
|:tcd| と同じです。
コマンド |:cd| と似てゐますが、カーソルがカレントウィンドウにある時にカレントディレクトリのみを變更します。別のウィンドウのカレントディレクトリは變更されず、別のウィンドウへの移動すると {path} の使用を止めます。
|:lcd| と同じです。
カレントディレクトリ名を表示します。
|getcwd()| も參照してください。
|:lcd| か |:tcd| コマンドが使はれない限り、全てのウィンドウは同じカレントディレクトリを共有します。別のウィンドウに移るコマンドを使つてもカレントディレクトリについての變化は何もありません。
|:lcd| コマンドがあるウィンドウ內で使はれると、指定されたディレクトリがそのウィンドウに對してのカレントディレクトリになります。|:lcd| コマンドが使はれたことのないウィンドウはグローバルまたはタブローカルなカレントディレクトリを使ひ續けます。別のウィンドウに移つたときは、カレントディレクトリは {譯注: 移動先に對して} 最後に指定されたローカルなカレントディレクトリになります。何も指定されてゐなければ、グローバルまたはタブローカルなカレントディレクトリが使はれます。
タブページに |:tcd| コマンドが使はれると、指定されたディレクトリはカレントタブページとカレントウィンドウのカレントディレクトリになります。他のタブページのカレントディレクトリは影響を受けません。別のタブページに移動すると、カレントディレクトリがそのタブページで最後に指定されたローカルディレクトリになります。カレントタブページにローカルのカレントディレクトリがない場合は、グローバルなカレントディレクトリが使用されます。
|:cd| コマンドが使はれると、カレントウィンドウとカレントタブページは固有のローカルなカレントディレクトリを失ひ、グローバルなカレントディレクトリを使ふやうになります。
|:cd| を使つた後は、ファイルの讀み書きにはフルパス名が使はれます。ネットワーク接續されたファイルシステムではこれが問題を起こすことがあります。フルパス名を使つた結果、現在使用中のファイル名は同じファイルを指し續けることになります。
例: ファイル a:test とディレクトリ a:vim があるとき、":e test
" ":cd vim
" ":w
" とするとファイル a:test を上書きし、a:vim/test には書き込みません。しかし ":w test
" とするとファイル a:vim/test が書き込まれます。それは新しいファイル名が指定され、":cd
" 以前のファイル名には言及してゐないからです。
Vim はテキストファイルの編輯のために作られましたが、バイナリファイルを編輯することもできます。
Vim の引數 |-b| (バイナリ "binary" の ’b’) は Vim にファイル入出力をバイナリモードで行はせ、バイナリファイルの編輯のためにいくつかのオプションを設定します (’binary’ をオン、’textwidth’ を 0、’modeline’ をオフ、’expandtab’ をオフにします)。
オプション ’binary’ をオンにすることも同じ效果を持ちます。これはファイルの讀み込み前にするといふことを忘れてはなりません。
バイナリファイルを編輯するときに忘れてはならないことがいくつかあります:
Vim はファイルを暗號化して保存し、再び讀み取ることができます。暗號化されたテキストは正しい鍵がないと讀むことができません。 {Vim が |+cryptv| 機能付きでコンパイルされたときのみ有效}
スワップファイルやアンドゥファイル內のテキストも暗號化されます。
しかしながら、これはブロック單位で實行されるので、より少ない時閒でパスワードがクラックされる可能性があります。スワップファイルを無效化することもできますが、クラッシュ時には作業內容が失はれることになります。アンドゥファイルは無效化してもそれほどの不利益はありません。
:set noundofile :noswapfile edit secrets
Note:
メモリ內のテキストは暗號化されません。ユーザーがテキストを編輯してゐる閒、システム管理者はそれを見ることができます。":!filter
" や ":w !command
" によつてフィルタに通してゐるときもテキストは暗號化されてをらず、他人に見られる可能性があります。’viminfo’ ファイルは暗號化されません。
機密テキストを編輯するときは次のやうに設定するといふ手もあります:
:set noundofile viminfo= :noswapfile edit secrets.txt
スワップファイルを無效化するとクラッシュまたは停電の時に編輯內容が失はれてしまふことを心にとめておきませう。。
警告:
鍵の入力時にタイプミスをしてファイルを保存して Vim を終了すると、テキストは失はれてしまひます!
暗號化を利用する通常の方法は、コマンド |:X| を使ふことです。これは鍵を入力するやう求めます。次の保存コマンドでファイルを暗號化するためにその鍵が使はれます。後で同じファイルを編輯するときは、Vim は鍵の入力を求めます。保存に使はれたものと同じ鍵を打ち込むと、再びテキストを讀み込むことができます。閒違つたキーを使ふと、テキストはめちやめちやになつて表示されます。
暗號化キーを入力するやう求めます。ディスプレイを見てゐる誰かが鍵を見ないやうに、打ち込むときには實際のテキストは表示されません。
打ち込まれた鍵はオプション ’key’ に保存されます。これはファイルを書き込むときの暗號化に使はれます。Vim の引數 |-x| も參照してください。
オプション ’key’ の値はテキストが書き込まれるときに使はれます。値が空でないとき、書き込まれたファイルは、その値を鍵として暗號化されてゐます。Vim がファイルが暗號化されてゐることを認識できるやう、ファイル先頭に特殊な數が付加されます。
暗號化を無效にするには、オプション ’key’ に空の値を入れてリセットします。
:set key=
’cryptmethod’ オプションを設定することで暗號化メソッドを選擇することができます。次の中から選擇できます:
:setlocal cm=zip " 弱いメソッド。後方互換 :setlocal cm=blowfish " 脆弱性ありのメソッド :setlocal cm=blowfish2 " 中强度のメソッド
ファイルを保存する前に設定します。暗號化されたファイルを讀み込んだとき、このオプションは自動的にファイル保存時に使はれたメソッドに設定されます。ファイルを保存する前に ’cryptmethod’ を變更することで使用するメソッドを變更することができます。
新しいファイルに使はれるデフォルトのメソッドを設定したい場合は |vimrc| ファイルで次を設定してください:
set cm=blowfish2
"blowfish2" の使用が强く推奬されます。"blowfish2" をサポートしてゐない古いバージョンの Vim を使はなければならない場合のみ、他のメソッドを使用します。
ファイルを讀み込んだり書き込んだりしたとき、zip なら "[crypted]"、blowfish なら "[blowfish]" とメッセージが表示されます。
アンドゥファイルが保存されるとき、同じキーとメソッドがアンドゥファイル內のテキストに適用されます。|persistent-undo|。
"blowfish" をサポートしてゐるかどうかテストするには下記の條件を使ひます:
has('crypt-blowfish') has('crypt-blowfish2')
上記の條件が利用できるのは Vim 7.4.1099 からですが、"blowfish" のサポート自體はもつと古くからあります。よつて上記の條件が僞になつたとしても "blowfish" をサポートしてゐることがあります。"blowfish" を使へるかどうかは次の條件でテストすることができます:
v:version >= 703
また "blowfish2" については次の條件でテストすることができます:
v:version > 704 || (v:version == 704 && has('patch401'))
Vim にパッチ 7.4.237 が含まれてゐることが分かつてゐるなら、次の條件で簡單にチェックすることができます:
has('patch-7.4.401')
暗號化が正しく機能しないと、保存したファイルが後で讀めなくなつてしまひます。そのため、暗號化が期待したとほりに機能してゐるかどうかを確認するための檢査が實行されます。これらのエラーが表示されたときはファイルを暗號化して保存しないでください。これを直すためには Vim を再ビルドする必要があるでせう。
內部エラーの *E831* は普通は發生しません。このエラーの再現手順を見つけた方は開發者へ聯絡してください。
暗號化されたファイルを讀み込んだとき、’key’ オプションの値が空でなければその値が復號に使はれます。空のときは入力プロンプトが表示されます。キーを入力しないか閒違つたキーを入力するとファイルは復號されずに開かれます。キーが閒違つてゐても警告は表示されません (總當たり攻擊を難しくするため)。
異なる鍵で暗號化したファイルの讀み込みを始めたいときは、オプション ’key’ の値に空文字列を設定してください。すると Vim が新しい値の入力を求めます。値の入力にコマンド ":set
" を使つてはなりません。他の人が肩越しにコマンドの入力を讀むことができるからです。
オプション ’key’ の値は祕密であることになつてゐるので、その値は決して見られてはなりません。vimrc ファイル內でこのオプションを設定してはいけません。
"/etc/magic", "/usr/share/misc/magic" 等、システムの持つてゐる "magic" ファイルならどれでもよいですが、下の行を追加すると、暗號化されたファイルが "file" コマンドに認識されるやうになります:
0 string VimCrypt~ Vim encrypted file >9 string 01 - "zip" cryptmethod >9 string 02 - "blowfish" cryptmethod >9 string 03 - "blowfish2" cryptmethod
Notes:
- オプション ’charconvert’ でコード變換をしてゐるときには暗號化はできません。
- コピーや削除したテキストは番號付きレジスタに格納されます。レジスタの內容は .viminfo ファイル內に保存することができますが、ここからは讀み出されるかもしれません。安全のためオプション ’viminfo’ を變更してください。
- コンピュータからしばらく離れてゐるときには誰かが Vim にコマンドを入力できますが、鍵を入手できるやうになつてゐてはいけません。
- キーを入力してゐるときにタイプミスをすると、テキストを復元できなくなつてしまふでせう!
- コマンド "
:set key=value
" で鍵を入力すると、それは履歷の中に保存され、viminfo ファイル內に ’key’ の値を晒すことになります。- 100 パーセント安全といふことは決してありません。Vim の暗號化は强度についてはテストされてゐません。
- ’cryptmethod’ が "zip" のときに使用されるアルゴリズムは簡單に破れます。4 文字の鍵なら約 1 時閒以內、6 文字の鍵なら 1 日以內で破れます (Pentium 133 PC で)。これにはファイル內に必ず現れるはずのテキストをいくつか知つてゐる必要があります。暗號破りの熟練者はどのやうな鍵であつても破ることができます。テキストが復號化されたといふことは鍵も明らかになつたといふことであり、同じ鍵で暗號化された他のテキストも復號化できてしまひます。
- Pkzip は ’cryptmethod’ の "zip" と同じ暗號化を用ゐてをり、合衆國政府はその輸出に對して異議を唱へてゐません。Pkzip の公開ファイル APPNOTE.TXT にはこのアルゴリズムが詳細に記述されてゐます。
- ’cryptmethod’ の "blowfish" の實裝には脆弱性があります。ファイルの最初の 64 バイト (條件によつてはもつと) はクラック可能です。これの使用は推奬されませんが、Vim 7.3 と 7.4 でサポートされてゐる中ではそれが一番强度のあるメソッドです。"zip" メソッドはさらに弱いです。
- Vim はオランダに起源を持ちます。そこがソースの出處です。從つて、暗號化コードはアメリカ合衆國から輸出されてはゐません。
Vim は編輯を始めたときのファイルの修正タイムスタンプとモードとサイズを覺えてゐます。これは同じファイルの別のバージョンを (知らずに) 作つてしまふのを防ぐためです。
シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の實行後、ウィンドウ內の全てのバッファでタイムスタンプとファイルモードとファイルサイズが比較されます。Vim は變更を受けたファイルに關して、イベント |FileChangedShell| に關聯付けられた任意の自動コマンドを實行するか、警告を表示します。GUI を使つてゐるときは、それらは Vim に入力フォーカスが戾つてきたときに行はれます。
ファイルが Vim の外部で變更を受けたときに自動的に讀み直して欲しいなら、オプション ’autoread’ をオンにしてください。しかしこれはファイルを書き込んだ時點では機能しません。ファイルが Vim 內部で變更されてゐないときだけです。
もしも質問されたくなかつたり、ファイルを自動的に再讀み込みをしたいのなら、次の設定を使ふことができます:
set buftype=nofile
もしくは、シェルから gvim を起動する時に
gvim file.log -c "set buftype=nofile"
Note:
イベント |FileChangedShell| に自動コマンドが定義されてゐると、警告メッセージやプロンプトは表示されません。その自動コマンドが對處するものとされてゐます。
ディレクトリに關する警告はありません (例へば |netrw-browse| で)。しかし新しいファイルの編輯を始めた後、同名のディレクトリが作られたときには警告されます。
ファイルのタイムスタンプが變更されたことに Vim が氣づいたとき、そのファイルがバッファ內で編輯されてゐるけれどもまだ變更されてゐないなら、Vim はファイルの中身が同じかどうかを調べます。このためにはファイルを讀み直し、テキストを比較します (隱れバッファに讀み込みますが、これはすぐに削除されます)。內容が同じならば警告は出ません。
自動警告では足りないと思つたなら、以下のコマンドが使へます。
Vim の外部で變更を受けたバッファがないかどうか調べます。これはファイルのバージョンが 2 個になつてしまはないかどうかを調べて警告します。
これが自動コマンドや ":global
" コマンドから呼ばれたときや、直に打ち込まれたのではないときは、實際に調べるのは副作用 (ファイルの再讀み込み) が無害となる時點まで延期されます。
讀み込まれてゐるバッファそれぞれについて關聯付けられたファイルが變更を受けてゐないか調べます。變更を受けてゐたら、Vim は對處動作を行ひます。すなはちバッファに變更點が無く、かつオプション ’autoread’ がオンのときは、バッファは讀み直されます。さうでなければ、ファイルを讀み直すかどうかの選擇肢が與へられます。ファイルが削除されてゐたら、エラーメッセージが表示されます。
以前には存在しなかつたファイルが存在してゐたら、エラーメッセージが表示されます。
一度ファイルが調べられるとタイムスタンプ情報が更新され、再び警告されることはありません。
特定のバッファのタイムスタンプを調べます。バッファの指定は名前、番號またはパターンでもよい。
ここでユーザーがバッファを再讀み込みすることを選ぶと、再讀み込みされます。そのバッファを含むウィンドウが表示されてゐる場合、再讀み込みはそのウィンドウの中で行はれます。そのやうなウィンドウがなければ、自動コマンドが正常に動作するやう、特殊なウィンドウが使はれます。このウィンドウを閉ぢることはできません。他にもいくつかの制限が適用されます。カレントバッファの外では何も起こらないやうにするのがベストです。
例へば、ウィンドウローカルなオプションをセットすると、閒違つたウィンドウの中でセットされてしまひます。ウィンドウを分割し、そこで何かをして、閉ぢることは大丈夫です (他の自動コマンドによる副作用が何もなければ)。無關係なウィンドウやバッファを閉ぢると問題を引き起こすでせう。
書き込み前にはタイムスタンプが調べられます。もし變更されてゐたら、Vim はそのファイルを本當に上書きするかどうかを尋ねます。
警告: 讀込んだ後にファイルに變更がありました!!! 本當に上書きしますか (y/n)?
’y’ を打ち込むと、Vim は續けて書き込みを行ひます。’n’ を打ち込むと、書き込みは中止されます。コマンド ":wq
" や "ZZ
" を使つた場合には Vim は終了せず、書き込む機會が再び得られます。
普通、メッセージは編輯セッションが始まつた後に誰かがファイルに書き込んだことを示してゐます。それは別の人物かもしれません。この場合、あなたの行つた變更とその人物が行つた變更が合倂されるべきか調べたいことでせう。ファイルを別の名前で書き込み、差分を調べてください (これにはプログラム "diff" が使へる)。
別の編輯セッションや別のコマンドで (例へばフィルタコマンド) そのファイルに自分自身で變更を加へたといふこともあり得ます。その場合、どちらのバージョンを保管したいかは自分でわかつてゐるでせう。
何も閒違つたことはしてゐないのにこのメッセージが現れる場合が 1 つあります: Win32 でサマータイムが始まる日です。Win32 ライブラリにより、Vim が時閒の差を混亂してしまふのです。この問題は次の日には直ります。
{Vim が |+path_extra| 機能付きでコンパイルされたときのみ有效}
現在のところ、オプション ’path’, ’cdpath’, ’tags’ と |finddir()|, |findfile()| で、本節で說明する「ファイル檢索」にしたがつてワイルドカードの展開が行はれます。それ以外のコマンドでは |wildcards| といふ少し異なるルールに從ひます。
ファイル檢索には以下の 3 種類があります:
下向き檢索にはワイルドカード ’*’ と ’**’ 及びユーザーの OS がサポートするその他のものが使へます。’*’ と ’**’ は Vim 內部で處理されるので、全ての OS で機能します。
Note:
"**" はパス名の先頭で使はれた場合のみ特別なワイルドカードとなります。
’*’ の使用法はきはめて單純です: 0 個以上の文字にマッチします。正規表現パターンでいふと ".*" と同じです。正規表現と異なり "." は必要ないことに注意してください。
’**’ はもつとすばらしい。
ですから ’/usr/**2’ は下のやうにマッチします。
/usr /usr/include /usr/include/sys /usr/include/g++ /usr/lib /usr/lib/X11 ....
’/usr/include/g++/std’ には、深さが 3 なのでマッチしません。
指定可能な範圍は 0 (’**0’ は無視される) から 100 です。負數を指定すると 30 を、100 より大きい數を指定すると 100 を指定したものとされます。システムにもパスの長さの限界が存在する場合があります。通常は 256 または 1024 バイトです。
’*’ と ’**’ を組み合はせる順番は自由です。
/usr/**/sys/* /usr/*tory/sys/** /usr/**2/sys/*
この方法ではディレクトリを指定すると、そのディレクトリから上に遡つてファイルを探します。上向き探索の上限となるディレクトリを指定できます。それはパス (オプション ’path’) かファイル名 (オプション ’tags’) の末尾に ’;’ で區切つて指定します。複數のディレクトリを指定したいときはそれらを ’;’ で區切ります。上限ディレクトリを指定したくないときは (ルートディレクトリまで上向き檢索したいとき) ’;’ だけを付けます。
/usr/include/sys;/usr
で檢索されるディレクトリは:
/usr/include/sys /usr/include /usr
相對パスを使ふと上向き檢索は Vim のカレントディレクトリから始まります。相對パスの指定が ’./’ で始まり、’cpoptions’ にフラグ ’d’ が含まれてゐないときはカレントファイルのディレクトリから始まります。
Vim のカレントパスが /u/user_x/work/release のときに
:set path=include;/u/user_x
とすると、コマンド |gf| でファイルを探す範圍は:
/u/user_x/work/release/include /u/user_x/work/include /u/user_x/include
Vim のカレントパスが /u/user_x/work/release のときに
set path=**;/u/user_x
とすると、コマンド |gf| でファイルを探す範圍は:
/u/user_x/work/release/** /u/user_x/work/** /u/user_x/**
注意!
これはかなりの時閒を食ふかもしれません。’/u/user_x/**’ は ’/u/user_x/work/**’ や ’/u/user_x/work/release/**’ を含むからです。つまり ’/u/user_x/work/release/**’ は 3 回、’/u/user_x/work/**’ は 2 回繰り返して檢索されます。
上の例では次のやうに設定したはうがいいかもしれません:
:set path=**,/u/user_x/**
これに含まれる範圍は
/u/user_x/work/release/** /u/user_x/**
となり、同じディレクトリですが順番が違ひます。
Note:
現在 ":find
", ":sfind
", ":tabfind
" コマンドは、’path’ アイテムに URL や深さ制限付きのダブルスター (/usr/**2) や 上方檢索 (;) などが含まれてゐると機能しないことに注意してください。