見出し画像

vim: 現在行のファイルを開きたいとき

 いろいろなファイルやディレクトリのパスが書かれているファイルを vim で開いて、カーソルのある行のファイルを一発で開きたいときのやりかた。

 例えばこのようなファイルです。

/home/user1/Documents
/home/user1/Documents/data1.jpg
/home/user1/Documents/data2.mp3
 : (以下略)

 一行目ではディレクトリの内容を表示したい、二行目では画像を表示したい、三行目では音楽を再生したい、というケースです。

 該当の行にカーソルを持っていって、次のようにすれば実現できます。

:.w !cat - | tr -d '\n' | xargs -0 gio open

:(コロン) ▶ コマンドラインモードへ移行。
.(ドット) 
▶ 現在行の内容を
 w ▶ 標準出力へ書き出して、
(スペース)▶ 重要。これが無いと、標準出力ではなくて 'cat -' というファイルに書き出されてしまって、以降は動作しません。
 ! ▶ 以降のコマンドを実行。

 ついでながら、コマンド部分は次のように動作します。

cat - ▶ 標準入力から読み込んで
tr -d '\n' ▶ 改行文字を削除して、
xargs -0 gio open ▶ デスクトップ上で開く。

 さすがにこれを毎回入力するのは大手間なので、大抵はどれかのキーに割り当てておくことになると思います。例えば .vimrc で F9 キーに割り当てる場合はこうなります。

<nnoremap> <F9> :.w !cat - \| tr -d '\n' \| args -0 gio open<CR>

 実行後に「続けるにはENTERを押すかコマンドを入力してください」となるのを避けたければ、上記の <CR> を <CR><CR> にしておけば良いです。

いいなと思ったら応援しよう!

恩田昌幸
最後まで読んでいただきまして、ありがとうございました!