vim-jp / vimdoc-ja / usr_22

usr_22 - Vimドキュメント

メインヘルプファイルに戻る
usr_22.txt    For Vim バージョン 8.2.  Last change: 2020 Mar 28

                     VIM USER MANUAL - by Bram Moolenaar

                                ファイルを探す


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

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

次章: usr_23.txt  特殊なファイルを編集する
前章: usr_21.txt  中断と再開
目次: usr_toc.txt

==============================================================================
22.1  ファイルブラウザー

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

        :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|
         cd...............表示ディレクトリをカレントディレクトリに...|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               ソート順序を逆にする。

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

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


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

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

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

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

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

==============================================================================
22.2  カレントディレクトリ

シェルと同じように 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


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

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

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

:lcd コマンドを使うまでは、すべてのウィンドウが共通のカレントディレクトリを
使っています。一つのウィンドウで :cd コマンドを実行すると、他のウィンドウの
カレントディレクトリも変更されます。
:lcd を使ってカレントディレクトリを変更したウィンドウは、固有のカレントディ
レクトリを持ちます。固有のカレントディレクトリは、他のウィンドウで :cd また
は :lcd を使っても変更されません。
固有のカレントディレクトリを持っているウィンドウで :cd コマンドを使うと、再
び共通のカレントディレクトリを使うようになります。


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

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


==============================================================================
22.3  ファイルを探す

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

==============================================================================
22.4  バッファリスト

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

指定された名前に近いバッファが検索され、名前が一致したバッファが一つだけなら、
そのバッファが使われます。この例なら "help.txt" など。
バッファを新しいウィンドウで開くには、次のコマンドを使います:

        :sbuffer 3

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


バッファリストを使う
--------------------

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

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

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

        :bdelete 3

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

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

==============================================================================

次章: usr_23.txt  特殊なファイルを編集する

Copyright: see manual-copyright  vim:tw=78:ts=8:noet:ft=help:norl:
関連キーワード:  バッファ, usr, ディレクトリ, netrw, 表示, コマンド, ウィンドウ, 変更, Vim, 名前