Next: , Previous: , Up: 目次   [Index]


ファイルを探す

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

		     VIM USER MANUAL - by Bram Moolenaar

				ファイルを探す

ファイルはどこにでもありますが、どうやつて目的のファイルを見つければいいのでせうか。Vim ではさまざまな方法でディレクトリツリーをブラウズできます。ファイルにジャンプするコマンドもあります。開いたことのあるファイルは後から參照できます。

|22.1|ファイルブラウザー
|22.2|カレントディレクトリ
|22.3|ファイルを探す
|22.4|バッファリスト

ファイルブラウザー

ディレクトリを編輯するためのプラグインがあります。試してみませう:

:edit .

自動コマンドと Vim script の魔法により、ディレクトリの內容がウィンドウに表示されます。例へばこんな具合です:

" ============================================================================
" Netrw Directory Listing                                        (netrw v109)
"   Sorted by      name
"   Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec
" ============================================================================
../
./
check/
Makefile
autocmd.txt
change.txt
eval.txt~
filetype.txt~
help.txt.info

次の項目が表示されます:

  1. ブラウジングツールの名前とバージョン番號
  2. 表示してゐるディレクトリ
  3. ソート方法 (name, time, size など)
  4. 名前のソート方法 (最初はディレクトリで、續いて *.h, *.c などなど)
  5. ヘルプの表示方法 (<F1> キーを使つてください)。利用可能なコマンド拔萃。
  6. ファイル一覽。"../" は親ディレクトリを示す。

構文强調表示が有效な場合は各項目が別々の色で表示され、視認性が上がります。

一覽の中はノーマルモードコマンドで移動できます。ファイル名の上にカーソルを動かして <Enter> を押すとファイルが開きます。もう一度 ":edit ." と入力すればエクスプローラーに戾れます。CTRL-O で戾ることもできます。

ディレクトリ名の上にカーソルを動かして <Enter> を押すと、ファイルブラウザーがそのディレクトリに移動し、新たなファイル一覽が表示されます。"../" ディレクトリの上で <Enter> を押すと上の階層に移動できます。あるいは、"../" までカーソルを移動しなくても、"-" を押すだけで上の階層に移動できます。

<F1> を押すと netrw ファイルブラウザーのヘルプが表示されます。表示は次のやうなものです:

9. Directory Browsing        netrw-browse   netrw-dir   netrw-list   netrw-help

MAPS                                                                 netrw-maps
     <F1>.............ヘルプ.....................................|netrw-help|
     <cr>.............ブラウジング...............................|netrw-cr|
     <del>............ファイル/ディレクトリを削除................|netrw-delete|
     -................親ディレクトリに移動.......................|netrw--|
     a................ファイル/ディレクトリを隱す................|netrw-a|
     mb...............ディレクトリをブックマークする.............|netrw-mb|
     gb...............ブックマークしたディレクトリに移動.........|netrw-gb|
     c................表示ディレクトリをカレントディレクトリに...|netrw-c|
     d................ディレクトリ作成...........................|netrw-d|
     D................ファイル/ディレクトリを削除................|netrw-D|
     <c-h>............ファイル/ディレクトリ隱し設定編輯..........|netrw-ctrl-h|
     i................表示スタイル變更...........................|netrw-i|
     <c-l>............最新情報に更新.............................|netrw-ctrl-l|
     o................水平分割してファイルを開く.................|netrw-o|
     p................プレビューウィンドウを使ふ.................|netrw-p|
     P................プレビューウィンドウで開く.................|netrw-p|
     q................ブックマークと履歷を表示する...............|netrw-qb|
     r................ソート順序を逆にする.......................|netrw-r|

(etc)

<F1> キーを押すと netrw プラグインのヘルプに飛びます。これは通常のヘルプページです。|CTRL-]| でタグジャンプして |CTRL-O| で戾ることができます。

ファイルを選擇してファイルを開きます: (カーソルをファイル名の上に移動してから)

<enter>カレントウィンドウでファイルを開く|netrw-cr|
oウィンドウを水平分割してファイルを表示する|netrw-o|
vウィンドウを垂直分割してファイルを表示する|netrw-v|
p|preview-window| を使ふ|netrw-p|
P直前のウィンドウで開く|netrw-P|
t新しいタブページで開く|netrw-t|

ノーマルモードでは次のコマンドを使つてブラウザーの表示をコントロールできます:

i表示スタイルを變更する (thin, long, wide, tree)。long ではファイルのサイズと日附が表示されます。
sファイルのソート方法を切り替へる。名前、更新時閒、サイズでソート可。
rソート順序を逆にする。

次のやうなコマンドもあります:

c表示してゐるディレクトリをカレントディレクトリにする。(|g:netrw_keepdir| で動作を變更できます)
Rカーソルの下のファイル/ディレクトリの名前を變更する。表示されるプロンプトに新しい名前を入力してください。
Dカーソルの下のファイル/ディレクトリを削除する。確認ダイアログが表示されます。
mb gbブックマークを設定/ブックマークに移動

次のやうな Ex コマンドもあります (他にもあります):

:Explore [directory]カレントディレクトリ、または指定したディレクトリをブラウズする。
:NetrwSettingsnetrw の現在の設定一覽。ヘルプリンク付き。

netrw ブラウザーの機能はローカルマシンに限定されません。次のやうに url を使ふこともできます: (末尾の ‘/’ は重要)

:Explore ftp://somehost/path/to/dir/
:e scp://somehost/path/to/dir/

詳細は |netrw-browse| を參照してください。

カレントディレクトリ

シェルと同じやうに Vim にもカレントディレクトリといふ槪念があります。例へば、ホームディレクトリにゐるときに "VeryLongFileName" ディレクトリにあるファイルを開きたい場合、そのまま實行することもできますが:

:edit VeryLongFileName/file1.txt
:edit VeryLongFileName/file2.txt
:edit VeryLongFileName/file3.txt

次のやうにすれば、入力が簡單です:

:cd VeryLongFileName
:edit file1.txt
:edit file2.txt
:edit file3.txt

":cd" コマンドでカレントディレクトリを變更できます。現在のカレントディレクトリを確認するには ":pwd" コマンドを使ひます:

:pwd
/home/Bram/VeryLongFileName

直前のカレントディレクトリは記錄されてゐるので ":cd -" で元の場所に戾れます。 例:

:pwd
/home/Bram/VeryLongFileName
:cd /etc
:pwd
/etc
:cd -
:pwd
/home/Bram/VeryLongFileName
:cd -
:pwd
/etc

ウィンドウローカルディレクトリ

ウィンドウを分割した直後、2 つのウィンドウは同じカレントディレクトリを使つてゐます。カレントディレクトリはウィンドウ每に設定できるので、新しいウィンドウだけカレントディレクトリを變更して別の場所で作業できます。これを、ローカルディレクトリといひます。

:pwd
/home/Bram/VeryLongFileName
:split
:lcd /etc
:pwd
/etc
CTRL-W w
:pwd
/home/Bram/VeryLongFileName

:lcd‘ コマンドを使ふまでは、すべてのウィンドウが共通のカレントディレクトリを使つてゐます。1 つのウィンドウで ‘:cd‘ コマンドを實行すると、他のウィンドウのカレントディレクトリも變更されます。

:lcd‘ を使つてカレントディレクトリを變更したウィンドウは、固有のカレントディレクトリを持ちます。固有のカレントディレクトリは、他のウィンドウで ‘:cd‘ または ‘:lcd‘ を使つても變更されません。

固有のカレントディレクトリを持つてゐるウィンドウで ‘:cd‘ コマンドを使ふと、再び共通のカレントディレクトリを使ふやうになります。

タブローカルディレクトリ

新しいタブページを開くと、新しいタブページが開かれた以前のタブページのウィンドウのディレクトリが使用されます。カレントタブページのディレクトリは ‘:tcd‘ コマンドで變更できます。タブページ內のすべてのウィンドウは、ウィンドウローカルディレクトリを持つウィンドウを除いて、このディレクトリを共有します。このタブページで新しいウィンドウを開くと、このディレクトリが現在の作業ディレクトリとして使用されます。タブページで ‘:cd‘ コマンドを使つてもタブローカルディレクトリを持つタブページの作業ディレクトリは變はりません。タブページで ‘:cd‘ コマンドを使用してグローバル作業ディレクトリを變更すると、カレントタブページ作業ディレクトリも變更されます。

ファイルを探す

C 言語のファイルを編輯してゐて、次のやうな行があつたとします:

#include "inits.h"

"inits.h" を開いて內容を確認したい場合は、カーソルをファイル名の上に動かして、次のやうに入力します:

gf

ファイルが檢索され、開かれます。

ファイルがカレントディレクトリにない場合は ’path’ オプションが使はれます。このオプションはディレクトリ名のリストです。指定されたディレクトリからファイルが檢索されます。

例へば、"c:/prog/include" にインクルードファイルがある場合は次のコマンドでディレクトリを追加できます:

:set path+=c:/prog/include

ディレクトリを絕對パスで指定した場合は、どこで作業してゐても同じディレクトリが參照されます。開いてゐるファイル以下のサブディレクトリにインクルードファイルがある場合は相對パスを指定してください。相對パスの先頭はドットです:

:set path+=./proto

この場合、ファイルが保存されてゐるディレクトリの "proto" ディレクトリからファイルが檢索されます。つまり、"inits.h" の上で "gf" を使ふと、同じディレクトリの "inits.h" が檢索された後に、"proto/inits.h" が檢索されます。

"./" を付けなかつた場合、つまり "proto" と指定した場合は、カレントディレクトリの "proto" ディレクトリが檢索されます。ファイルのディレクトリとカレントディレクトリは意味が異なるので注意してください。

ディレクトリの指定方法は他にもあります。’path’ オプションのヘルプを參照してください。 ’isfname’ オプションには、ファイル名として使へる文字、あるいは使へない文字を設定できます (例へば上の例では ‘"’ 文字がファイル名に含まれてませんね)。

ファイルの名前がわかつてゐる場合は、その名前がファイル內で使はれてゐなくても、檢索することができます:

:find inits.h

path’ オプションを使つてファイルが檢索されます。’path’ が使はれる以外は ":edit" コマンドと同じです。

檢索したファイルを新しいウィンドウで開くには、"gf" ":find" ではなく "CTRL-W f" ":sfind" を使ひます。

Vim を起動して ’path’ の中からファイルを開くには、次の方法が便利です:

vim "+find stdio.h"

path’ 內の "stdio.h" が檢索されます。引數はクォート (‘"’) で圍む必要があります |-+c|。

バッファリスト

Vim では編輯中のファイルのことをバッファといひます。バッファはファイルのコピーです。編輯を終へて保存したときに、バッファの內容がファイルに書き込まれます。バッファにはファイルのテキストの他に、マークやオプション設定などのファイルに關聯した情報も記錄されます。

隱れバッファ (HIDDEN BUFFERS)

例へば、one.txt を編輯してゐるときに two.txt を編輯したくなつたとします。one.txt は變更されてゐるので ":edit two.txt" は使へません。しかも、あなたはまだ one.txt を保存したくはありません。次のコマンドで解決できます:

:hide edit two.txt

"one.txt" といふバッファは畫面から消えます。しかしバッファの內容が失はれるわけではありません。未保存のテキストはまだ殘つてゐます。このやうなバッファを隱れバッファといひます。

":hide" コマンドの引數はコマンドです。指定されたコマンドは、’hidden’ オプションがオンに設定されてゐるかのやうに動作します。もちろん、自分で ’hidden’ オプションを設定しても構ひません。バッファが破毀されたとき、’hidden’ がオンなら、そのバッファは隱れバッファになります。

隱れバッファを使つたときは、すべてのバッファが保存されたのを確認してから Vim を終了してください。

休眠バッファ (INACTIVE BUFFERS)

バッファを閉ぢてもいくつかの情報は失はれずに殘ります。バッファリストに入つてゐるバッファの內、畫面に表示されず、隱れバッファでもないバッファのことを休眠バッファといひます:

アクティブバッファウィンドウに表示されてゐる。テキストはメモリの中。
隱れバッファ表示されてゐない。テキストはメモリの中。
休眠バッファ表示されてゐない。テキストは保持されてゐない。

休眠バッファにはファイル名やマークなどの情報が保存されてゐます。ファイル名が保存されてゐるので、編輯したことのあるファイルを確認し、それを再び開くことができます。

バッファリストの表示

次のコマンドでバッファリストを表示できます:

:buffers

次のコマンドも同じです。コマンドの名前と機能が聯想しずらいかもしれませんが、入力は簡單です:

:ls

コマンドの出力例:

1 #h   "help.txt"                     line 62
2 %a + "usr_21.txt"                   line 1
3      "usr_toc.txt"                  line 1

行頭の數字はバッファ番號です。バッファを開くときに名前の代はりにバッファ番號を指定することもできます。下記參照。

バッファ番號に續いてフラグ、ファイル名、最後にカーソルが位置していた行番號、が表示されます。

フラグ部分には以下の文字が (左から右へ) 表示されます。

u非列擧バッファ (|unlisted-buffer|)。
 %カレントバッファ。
 #オルタネートバッファ。
  aテキストを持つてゐる。表示されてゐる。
  hテキストを持つてゐる。隱れバッファ。
   =讀み込み專用。
   -變更不可 (’modifiable’ オプションがオフ)。
    +變更あり。

バッファを開く

バッファ番號を指定してバッファを開くことができます。ファイル名を入力する必要はありません:

:buffer 2

しかし、バッファ番號を知るためにはバッファリストを表示しなければなりません。名前の一部分だけを指定して開くこともできます:

:buffer help

指定された名前に近いバッファが檢索され、名前が一致したバッファが 1 つだけなら、そのバッファが使はれます。この例なら "help.txt" など。

バッファを新しいウィンドウで開くには、次のコマンドを使ひます:

:sbuffer 3

もちろん名前も指定できます。

バッファリストを使ふ

次のコマンドでバッファリストの中を移動できます:

:bnext次のバッファを開く
:bprevious前のバッファを開く
:bfirst最初のバッファを開く
:blast最後のバッファを開く

次のコマンドでバッファリストからバッファを削除できます:

:bdelete 3

もちろん名前も指定できます。

アクティブバッファ (ウィンドウに表示されてゐるバッファ) を削除すると、表示していたウィンドウも閉ぢます。カレントバッファを削除するば、カレントウィンドウが閉ぢます。ウィンドウが 1 つしかなかつた場合は、他のバッファに切り替はります。何もないを開くことはできません!

Note:
":bdelete" でバッファを削除してもバッファの情報は失はれません。バッファが "unlisted" 狀態になり、":buffers" コマンドで表示されなくなるだけです。":buffers!" コマンドを使へば unlisted バッファも表示されます (さう、Vim は不可能を可能にするのです)。バッファの情報を完全に消去するには ":bwipe" を使つてください。’buflisted’ オプション參照。


Next: , Previous: , Up: 目次   [Index]