希望のファイルを自由自在に開く

ファイルジャンプなどのコマンド解説

概要

JVimを起動してから 他のファイルを開きたくなった場合,どのようにしていますか ? とりあえず JVimを閉じてから…という人 は このページをよく読んでみて下さい

ここでは何種類かの方法を紹介しますが 工夫の仕方次第で もっといろいろな 開き方もあるので 慣れたらいろいろ試してみて最も便利な方法を考えるのも 面白いかと思います

まずは基本

jvim起動中に

:new filename

または :sp filename とすれば,新しくファイルを読み込み,画面分割します
画面間の移動は CTRL-Wk CTRL-Wj で 上や下に移動できます. 詳細は
別文章で解説してます

画面を分割したくない場合

:e filename

で ファイルを読み込んで編集対象を切替えます
ただし,切替える前のファイルは セーブされていないと失敗する ことがあります

:set hid のように hid オプションを設定すれば 元のファイルを隠しておいて 切替えることができるし :set autowrite すれば 切替え時に変更を自動的にセーブするようになります
あるいは

:e! filename

のようにびっくりマークをつけてコマンドを実行すると 元ファイルにしていた変更を すべて捨てて切替えます

結構ありがちなのは…ファイル名を打とうという時になって 「あれっ…ファイル名は何だったっけ ?」 というものでしょう…でも大丈夫 :sp :e の後ろにスペースを入れてから CTRL-D を押すと 選択肢となるファイル名の一覧が表示 されます
シェルの補間機能のように 最初の1〜2文字だけを入れてから TAB CTRL-D で 完全なファイル名を補間させたり候補を表示させることもできます

ちょっとディレクトリのファイルを見たくて "ls"したいだけならば

:!ls

で 一時的にシェルに戻って lsコマンドを実行することもできます

なお,ファイル名入力の時は パス名つきでももちろんOKです
自分のホームディレクトリもシェルなどと同様に ~ 記号で代用できるし 入力する時も シェルみたいな補間機能が使えます.(デフォルトはタブキー) パス名などを入力中に CTRL-D を押せば その時点での有効な候補をすべて 表示できます

現在いるディレクトリからの相対パスでも指定できます
:pwd コマンドで現在のディレクトリを確認もできるし :cd コマンドで 変更もできます

カーソル位置のファイル名でジャンプする

開きたいファイル名がカーソル位置に書いてあった場合には

CTRL-W f

という操作(コントロールWを押した直後に f を押す)だけで目的のファイルを開けます. ためしに

:r!ls

などとしてファイル一覧を読み込ませてから, 好きなファイル名が書かれた行の上に カーソルを移動させて CTRL-W f をやってみて下さい
カーソル位置の文字列をファイル名とみなして読み込み, 画面を分割 します

画面を分割しなくても良い場合は カーソルを飛びたいファイル名の書いてある 行の上にもっていってから gf コマンドで画面を切替えてジャンプできます
ただし,ジャンプ前の画面がセーブされていないとジャンプは失敗します
わざわざセーブしたくない場合は 設定ファイルに hidden などのオプションを 設定しておくと便利に使えると思います

なお, gf コマンドや CTRL-W f コマンドでは パス名がついていてば それも正しく解釈して目的のファイルを開けます. つまり

/home/jonny/.bash_profile

なんて行にカーソルをやって どこにいても瞬時に希望のファイルを読み書きできます

gf コマンドは, ファイル名がフルパスで書かれていれば どのディレクトリにいても そのファイルを開く事ができるのですが, パス名がついていないファイル名の上で コマンドを実行した場合は, オプション path に設定されているディレクトリの中に カーソル位置の文字列と同じ名前のファイルを探しに行きます. 頻繁に gf コマンド で呼び出して使いたいファイルのあるディレクトリは ここに登録しておくと便利だと思い ます. 例えば

set path=.\ ~/\ /usr/include

のような行を設定ファイルに書いておけば「現在いるディレクトリ」,「ホーム ディレクトリ」,「/usr/include」以下にあるファイルならばパス名をつけなくて も gfコマンドが適用できるというわけです. なお, この例のように並べて複数のディレクトリ名を書く時は バックスラッシュなどで 空白文字をエスケープするのを忘れないように注意

grepコマンドの出力からジャンプ

unixのコマンドである grep を使って grep -n の出力から gg コマンドで該当する場所に直接ジャンプできます. grepコマンドは知ってますよね ?

grep -n (文字列) (ファイル名)

とすると, ファイルの中の指定した文字列を含む行を探し, 次のような形式で出力されます

(ファイル名) : (行番号) : (該当する行の内容)

…というわけで grep結果をリダイレクトするか,または jvimの中から

:r!grep -n 文字列 ファイル名

として読み込ませてから カーソルをジャンプしたい行にあわせて

gg

と打つと 該当するファイルを開いてその行にジャンプします. 同じ形式の行ならば 別に grep -n の出力じゃなくても良いので使い方はいろいろ考えてみて下さい

例えば HTMLファイルの「リンク」の機能みたいに使えます. 特定のファイルから 別のファイルへの参照が多いときは ファイル名を書いておくと この機能によって手軽に行き来できますね. ちなみに CTRL-^ で飛ぶ前のファイル に戻ってこれます. 例えば…文章中に

/etc/fstab:5: この行から"gg"コマンドでfstabの5行目に飛ぶことができます

みたいな行を書いておけば この行で gg するだけで気軽にジャンプして CTRL-^ で戻ってこれます. いろいろと参照できて便利ですよね. 目的別に リンク集みたいなファイルを作るのも面白いかも

ちなみに

(ファイル名) : (行番号) :

の部分さえあれば正しく機能します. これ以降は何を書いても書かなくても良いので メモなどを書いて利用できます

関連機能とその情報

似たような機能としては tagジャンプ機能 というのがあります. これは 特定のファイルと場所に 短い別名のようなものをつけて その短い名前で 呼び出すことができるというものです. これも頻繁に読み書きするファイルを 登録しておくと大変便利に使えるので ぜひ覚えましょう

あと,複数のファイルの読み込みを覚えたならば 当然複数のファイルを自由に切替え たり 窓の分割などの関連操作 も覚えましょう


前項目, 「入力中の文字列を瞬時に補間」へ

目次へ

次項目, 「複数ファイルを同時に扱うには」へ