こんにちは!ACCESS の近藤です。
前回担当日は 0:00 に自動投稿になるよう焦って下書きに突っ込むくらいの気概がありましたが、
他のメンバーの投稿時間を見て、あっ、0:00 じゃなくても良いんか。と気づいてからはもうこの余裕ですよ。
寝坊したけど間に合ってしまうと、次からデフォルトになるアレですね。。
というわけで、今回は デフォルト設定でできる vim のコピペ色々です。
もう4年くらい前になりますが、
Linux + vim の世界に足を踏み入れた時に一番困ったのがコピペでした。
御存知の通りターミナル上で動作する vim は GUI アプリケーションのエディタとは異なり、
気軽にマウスでえいやっ!とやると、意味不明な動きをして大惨事になったりします。
今回は、あれこれいじらずデフォルト設定でも、それなりに使えるコピペ方法についてまとめてみます。
ヤンクとペースト
最も一般的なコピペはこれで、vim で作業をしている際に最も使う方法だと思います。
yy " など色々p
ヤンクする色々な方法は、ググれば詳しい情報はたくさん見つけることができると思いますので、
ここでは、説明は省略させていただきます。
別ターミナル上の vim からコピペ
yy "ヤンクしておきます:wv
:rv!p"ペースト!
さて、恐らくヤンクとペーストを覚えてすぐ不便だと感じるのは、
別のターミナルで開いている vim でヤンクした文字列をペーストできないことだと思います。
男は黙って vim フルスクリーン!!と、
心の中で思ったなら、その時既に行動が終了しているレベルに達するまでの間は、
複数ターミナル上で vim 開いてコピペしたいという場面は多いと思います。
こういう場合は :wv, :rv で .viminfo を介してレジスタの読み書きを行うのが便利です。
最後にヤンクした文字列をペースト
"0p
せっかくヤンクしたのに、x とか dd とかで少し削ったら消えるやんけ!
という悩みもありがちだと思いますが、カットでは 0番レジスタには書き込まれないため上記のコマンドでペーストできます。
また、頻繁に打つのはかったるいコマンドなので、好みにもよると思いますが、
p を "0p にバインドしてしまうのもありかと思います。
マウスでコピペ
通常の GUI のエディタになれ親しんだ人からすると、
マウスを使ってコピペするのは軟j…ではなく、自然な発想です。
例えば、豪傑でもブラウザからサンプルコードをコピペしたり、
仮想環境であれば、ホストOS上でコピーした内容をペーストしたりといったことはよくあると思います。
が、マウスを使って vim にペーストする場合は結構癖がありますので注意が必要です。
ここでは、下記2つの方法をご紹介します。
インサートモードからペーストする
:nosi(あるいは :noai)iマウスでペースト
:si(あるいは :si)
まず、大抵の場合オートインデントが設定されていると思いますので、これを一時的に解除します。
これをしないとインデントが大幅に崩れてしまうためです。
次に、インサートモードからペーストする必要がある点に注意です。
vim のノーマルモードでマウスからペーストすると、
ペーストした文字列をノーマルモードで入力したコマンドとして解釈されるため、
文字列によって割りと凄惨なことになります。undo も大変…。
その後、一時的に解除したオートインデントを元に戻してあげます。
コマンドモードからペーストする
:a!マウスでペースト
改行
ESC
こっちが簡単なのでオススメです。
コマンドモード上で文字列が入力され、ESC を押した時点でテキストに反映されます。
最後に改行がない行 (EOF で終わっている行) はペーストされないので、その点は注意が必要です。
動作確認環境
雑ですみませんが…、このへんで動くことは確認しています。
真新しいことは何もしていないので、それ以前の古い環境でもそれなりに動くと思います。
Ubuntu 12.04 以降
- デフォルトのターミナル
- デフォルトの vim 以降
Mac OS X Mountain Lion 以降
- デフォルトのターミナル
- デフォルトの vim 以降
あとがき
やはり、文字だけだとわかりづらいですね…。
よく vim のコマンドやプラグインを紹介されている記事だと gif アニメ等でわかりやすく紹介されているので、
真似してみようと思っていましたが、案の定この体たらくです。すみません。
さて、明日の取りを飾るのは
@aKatsuhiroMiharaさんです!
最終日もよろしくお願いします!\(^o^)/