誰にでも よく読み書きするファイル ってありますよね. ちょっとしたメモを
ファイルにしているとか, カスタマイズが好きな人なら何かの設定ファイルとか
…そういうものを どのディレクトリにいても,何か別のファイルを編集中でも
即座に切り替えて呼び出す機能があります. この機能は 標準のViからあった機能
ですが タグ機能などと呼ばれます
この機能を使う手順としては
…これだけで使えるようになります. あとは 短い名前で呼び出して便利に使えます
詳しくは以下を読んで下さい
まず機能を使う前に,ファイルを呼び出すための短い名前と 実際のディレクトリや
ファイル名の対応をあらかじめ用意しておかないと話が始まりません
あれこれ説明する前に 実際のファイル(tagファイル)の例を書きます
bash /home/yamada/.bash_profile 1
memo /home/yamada/text/memo/memo.txt 1
tags /home/yamada/rc/.jvimtags 1
…こんな感じです. これは「例」なので,ディレクトリ名やファイル名は実在のものが書かれて
いるものとします. このファイル自体は "/home/yamada/rc/"というディレクトリに
".jvimtags"という名前をつけて置いてあるものとします. 実際のディレクトリやファイル名は
自分の好きな場所や名前にできます
ではこのファイル内容の解説をします
まず, 記述は ひとつのファイルの呼び出し登録につき 一行 という形式で書き,
ひとつの行には スペース(ひとつ以上)で区切られた三つの項目があって 順に
…を書きます. タグ名は適当に短い名前をつけましょう. 例えば例の一行目には "bash"という
名前がついていることが分かると思います
二番目の「開きたいファイル名」の指定は, フルパスで書きましょう
三つ目の項目も省略できません. とりあえず開くだけで良いのであれば行番号を書いておけば
よいと思います. 例ではすべて ただ 1 とだけ書いてありますが, これは「ファイルの一行目」
つまり最初の行にカーソルがある状態で開くという意味です
または,ファイルで最初に "PATH"という文字が出現する場所で開きたいのであれば
bash /home/yamada/.bash_profile /PATH/
などと書きます. 検索のような書き方です. 要するに, 多くの Exコマンドが書けると思って
良いと思います. 興味のある人は いろいろ試してみましょう
bash /home/yamada/.bash_profile +50
ならば ファイルを開いてから 50行後ろにカーソルのある位置(51行目)で開きます
これだけで "bash" という短縮名で呼び出すと "/home/yamada/.bash_profile"の
指定した行の編集を即座にできるようになります
なお, この対応ファイル(tagファイル)には 何と言う名前をつけてもかまいません
jvimには 設定ファイルに このファイルの名前を書くことになるので 自由にできます
上の三行の例では このタグ名設定ファイルもすぐに呼び出せるように
tags /home/yamada/rc/.jvimtags 1
という行があります. これで このファイルも即座に呼び出せるようにしているわけです
このファイルは必ず アルファベット順にソート されていなければ 正しく機能しません. ファイル中のすべての行をアルファベット順にソートするには
:%!sort
のようにすれば良いでしょう. 忘れないように気をつけて下さい
さて,対応を書いたファイルができあがったら,その対応ファイルの名前をJVimに使って
もらうための設定をしなければいけません
これは簡単です. 自分のjvim設定ファイル(たとえば ~/.vimrcとか ~/.exrcとか) の中に
set tags=/home/yamada/rc/.jvimtags
というように一行書き加えるだけです
対応ファイルにパス名をつけないで,例えば
set tags=tags
と書くと, 今いるディレクトリの下にある "tags"というファイルを使うことになります
また,タグの対応ファイルが複数ある場合には スペースで区切っていくつも書けますが
set tags=tags\ /home/yamada/rc/.jvimtags\ /home/yamada/rc/.tagfile2
のように スペース文字をバックスラッシュ文字でエスケープする必要があるので注意
ここまでで準備ができました. さて, これを呼び出す操作をしてみましょう
起動時に -tオプションをつけて, その後にタグ名(短縮名)を書きます. 例えば
のようにします. どのディレクトリにいても一発で該当するファイルが開けます
何かすでに jvimでファイルなどを編集中なのであれば
:tag bashあるいは (一文字だけだけど)省略形で
:ta bash
とやってみると 即座に編集対象が .bash_profileに切り替わります
ただし, 切り替え前のファイルに変更を加えていて これをセーブしていない状態
だと「変更中なので切り替えできないよ〜」みたいなエラーメッセージが出て来て
移動できないかも知れません. こういう時はセーブしてから試してみて下さい
セーブせずに「変更したのは捨ててしまってかまわない」のであれば
:tag! bash または :ta! bash と打てばOKです
変更中でも 内容をそのまま置いといて切り替えたいという人は hidden オプションを
設定しておけば,切り替えの時に 変更中のファイルは画面から 見えなくなるだけで
状態を保存しておいたまま にできます. 変更中のファイルに
戻りたくなったら CTRL-^ とか CTRL-T で 切替前のファイルに戻れます
あるいは :files と打てば (詳しい説明はここでは省略しますが) 画面の
下の部分に一時的に「現在読み込まれているファイルのリスト」を番号つきで表示しますの
で , 見たいファイルの番号をこれで確認してから…たとえば 二番のファイルに戻りたければ
2CTRL-^ とか :e#2 などと打って
希望のファイルの編集に切替えたりできます. 開いたことのあるファイルが
二つだけなのであれば :files で確認しなくても
CTRL-^ または :e# だけでも OKだと思います
他にもタグ名を使った飛び方がいくつかあります
とすると 現在 カーソルのある位置の文字列をタグ名とみなして ジャンプできます
とすると 現在カーソルのある位置の文字列をタグ名とみなして 窓を分割して ジャンプできます
タグ名がファイルの中に書いてあることなんてあるのかなあ ? と思う人もいるかも
知れませんが, もともとこの機能は C言語のプログラムで 関数の名前をもとにして
ジャンプできるようにするためにあった機能なのです
C言語でプログラムを書く人は ctags という unixのコマンド(自動的にタグ対応ファイル
を作ってくれるコマンド)がインストールされているかも知れません. マニュアルを読んだりして
調べてみると幸せになれると思います. プログラム中の 関数名の上にカーソルを置くだけで
関数そのものの場所にジャンプ できればプログラムを書く効率も良くなると思います