web-dev-qa-db-ja.com

bashでVimへの入力ファイル名としてクリップボードを取得するにはどうすればよいですか?

xclipをインストールして、システムクリップボード、設定、および以下の操作にアクセスします。

➜  ~ cat .zshrc | grep xclip
alias c="xclip -selection c"
alias v="xclip -selection c -o"
➜  ~ which dict | c
➜  ~ v       
/usr/bin/dict
➜  ~ Sudo vim ??  

/usr/bin/dictはpythonスクリプトです。そして、私が知りたいのは、最後のコマンドで??をvimopen file /usr/bin/dictで置き換えることができるものです。

1
roachsinai

現在の設定を考えると

_Sudo vim "$(v)"
_

コマンド置換 を使用してエイリアスvを実行し、実行する前にその出力をコマンドラインに挿入して実行するため、最後に_Sudo vim /usr/bin/dict_が実行されます。引用符は、それが単一の引数として出力されることを確認し、$(...)はコマンドの実行とその出力のキャプチャを処理します。

エイリアスは他の場所では使用されないため、これはインタラクティブシェルからのみ機能します。スクリプトからアクセスしたい場合は、PATH変数のどこかに、同じコマンドを含む小さなスクリプトを作成できます。


これにタグを付けました bash しかし、_.zshrc_からの抜粋を示したので、zshには「 グローバルエイリアス 」があり、どこにでも展開できることに注意してください。

_alias -g v='"$(xclip -selection c -o)"'
_

次に、_Sudo vim v_を実行して、それを無料で実行します。グローバルエイリアスは、ほとんどの場合、価値があるよりも厄介なので、お勧めしませんが、使用パターンによってはsomeグローバルエイリアスが便利です(そうする場合は、長くて珍しい名前をお勧めします。奇妙な句読点を入れると、誤って実行するのを防ぐことができるため、_alias -g v# ..._または_@v_または_^v_など) 。

2
Michael Homer