Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@igrep

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

More than 1 year has passed since last update.

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

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

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

あわせて読みたい

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
igrep
Haskellとプリキュアが好き。よく眠り、よくコードを書きたい。 今はHaskell関係の記事は https://haskell.jp/blog に書いております。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?