0
0

More than 1 year has passed since last update.

Mac — Vimでクリップボードのテキストを直接編集する

Last updated at Posted at 2018-08-22

pbpaste と pbcopy をうまく組み合わせれば出来るはずと思って試した結果。

結論から先に書く

function pbvim (){
  readonly pbvim_tmp_file=./.pbvim.tmp

  pbpaste | vim - +"w $pbvim_tmp_file"
  cat "$pbvim_tmp_file" | tr -d "\012"| pbcopy # tr は末尾の改行を削除するため

  rm -f "$pbvim_tmp_file"
}

上記の関数を rc ファイルに追加する。 ( e.g ~/.bashrc ~/.zshrc )

シェルを再起動して pbvim を実行すると、vimでクリップボードのテキストを直接編集して上書き出来る。

ccc/pbvim at master · YumaInaura/ccc

ステップ解説

Step. 標準出力からVim編集を開始する

pbpaste | vim -

ただ、このやり方だとファイル名を渡していないため、そのままだと編集できない

Step. Vimにファイルパスを渡す

pbpaste | vim - +"w some_filepath"

「シェルから実行するvimコマンド」の引数として「vim 内部のコマンド」を渡す。

:w some_filepath という「vim内部のコマンド」がファイル編集前に実行される。 ( some_filepath という名前で編集内容を保存 )

Step. 一時ファイルを利用

vimでの編集内容を pbcopy コマンドに標準入力として渡したいが、
vim コマンドはファイル内容を標準出力するわけではないので、ここでは一時ファイルを利用する。

  1. 一時ファイルを作成
  2. pbpaste での標準出力をvimに渡す
  3. vimで編集して一時ファイルに記録された内容を、別コマンド ( cat ) で標準出力する
  4. 標準出力を pbcopy コマンドに渡す
  5. 一時ファイルを削除する

この流れ全体を実行したのが最初の例である。

Versions

  • VIM - Vi IMproved 8.1 (2018 May 18, compiled Aug 7 2018 21:58:18)
  • Max OS X High Sierra

Ref

Links

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0