LoginSignup
7

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-05-04

よく使う小ネタ。
なんとなく公開しておきたくなったので雑にメモ。
一度実行してコマンドの履歴に入れておくと捗るのではないかと。

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

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 @+ = ... でクリップボードを読み書きできます。

あわせて読みたい

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7