Vim

Vimのコマンドで関数の結果をクリップボードにコピーしたり

よく使う小ネタ。

なんとなく公開しておきたくなったので雑にメモ。

一度実行してコマンドの履歴に入れておくと捗るのではないかと。

例えば、一番ありそうな応用方法として、次のように実行すれば今開いているファイルの名前をクリップボードにコピーできる。

let @+ = expand('%')

フルパスが欲しい場合はこう :point_down:

let @+ = expand('%:p')

おまけ: Windowsな方はsubstituteしてバックスラッシュをスラッシュに変換しておくと*nixな方に送るとき捗る。

let @+ = substitute(expand('%'), '\\', "/", "g")

(何もつけないpコマンドで貼り付けできる)無名のレジスタにコピーしたい場合は :point_down:

let @" = expand('%')


簡単な解説

Vim script(この場合コロン : で実行する奴と言い換えても構いません)では

letというコマンドで変数を宣言したり変数の値を書き換えたりできます。

実はこのlet, Vimでコピペする時に使う、レジスターという領域を書き換えることもできるのです。

先ほどのように、名前が「@ + 1文字」の変数を使うことで、letコマンドをはじめ、

Vim scriptからそのレジスターを読んだり書いたりできるようになっています。

例えばそのうち@+はクリップボードを表すレジスター(を読み書きする変数)です。

なので let @+ = ... でクリップボードを読み書きできます。


あわせて読みたい