viでコピペがうまくいかない場合の対応方法

はじめに

viでコピペをした際、インデントやコメントなど意図せぬ改変が発生してしまい困った場合の対応方法について説明します。

viでコピペした際の改編例

以下はWordpressで利用するwp-config.phpをテキストエディタで開いたキャプチャです。

Vi paste 01

これをviでそのままペーストすると

Vi paste 02

インデントが追加されていることや、コメント外の行までもがコメントアウトされているのがみて取れると思います。

最初はペーストミスかと思いましたが、何回やってもこのようにしかなりません。

コピー時の状態でそのままペーストするには

viはノーマルモードだと拡張子に応じてインデントやコメント扱いとなってしまいます。

その為、ノーマルモードではなく、ペーストモードでviを動作させる必要があります。

ペーストモードで動かすには

ペーストモードはコマンドモード時に:set pasteと入力することで、入力モード時にペーストモードで動作させることが可能となります。

コマンドモードの状態で

Vi paste 03

:set pasteと入力します。

Vi paste 04

この状態で入力モードに切り替えると以下のように(paste)と表示されます。

Vi paste 05

あとはこの状態でペーストすると

Vi paste 06

というようにインデントやコメントアウトされずに、コピーした状態そのままペーストすることが可能になります。

終わりに

インデントやコメントアウトは常に付与されるわけではなく、拡張子によって変わります。例えば今回と同じ内容でも拡張子がtxtであれば発生しません

なのでペーストモードのコマンドがわからない場合、一時的に拡張子を変更してペーストして、その後に拡張子を戻すというのも一つの手です。