viでコピペがうまくいかない場合の対応方法
はじめに
viでコピペをした際、インデントやコメントなど意図せぬ改変が発生してしまい困った場合の対応方法について説明します。
viでコピペした際の改編例
以下はWordpressで利用するwp-config.phpをテキストエディタで開いたキャプチャです。
これをviでそのままペーストすると
インデントが追加されていることや、コメント外の行までもがコメントアウトされているのがみて取れると思います。
最初はペーストミスかと思いましたが、何回やってもこのようにしかなりません。
コピー時の状態でそのままペーストするには
viはノーマルモードだと拡張子に応じてインデントやコメント扱いとなってしまいます。
その為、ノーマルモードではなく、ペーストモードでviを動作させる必要があります。
ペーストモードで動かすには
ペーストモードはコマンドモード時に:set pasteと入力することで、入力モード時にペーストモードで動作させることが可能となります。
コマンドモードの状態で
:set pasteと入力します。
この状態で入力モードに切り替えると以下のように(paste)と表示されます。
あとはこの状態でペーストすると
というようにインデントやコメントアウトされずに、コピーした状態そのままペーストすることが可能になります。
終わりに
インデントやコメントアウトは常に付与されるわけではなく、拡張子によって変わります。例えば今回と同じ内容でも拡張子がtxtであれば発生しません。
なのでペーストモードのコマンドがわからない場合、一時的に拡張子を変更してペーストして、その後に拡張子を戻すというのも一つの手です。