web-dev-qa-db-ja.com

VIM貼り付けたものをコメント化する

VimでこのGistをコピーしようとしたときに、これを取得しました: https://Gist.github.com/w0ng/3278077

enter image description here

どこでも同じ動作に気づきます。コメントを含むものを貼り付けると、コメントに続くすべてのものにコメントが貼り付けられます。

多分それは私が挿入モードでコメントを書いてEnterを押すと、次の行が自動的にコメントを追加するという事実と関係があるのか​​もしれません。

どうすればこの動作を取り除くことができますか?

17
jviotti

貼り付ける前に貼り付けモードに入ります:

:set paste

「通常」モードに戻すには:

:set nopaste
29
Mat

pasteオプション Matによって記述 のほかに、VIMからXクリップボードに直接アクセスすることもできます。

  • "*pはX11セレクションを挿入します
  • "+pはX11クリップボードを挿入します

VIMバージョンが必要です(Debianおよびその派生物では、vim-gtkまたはvim-gnomeパッケージをインストールする必要があります)。

詳細については、 ドキュメント:help x11-selection)を参照してください。

11
jofel

これが起こっていることです。コメント行にいるときに、新しい行を自動的にコメント化するVim書式設定オプションがあります。これらのオプションの一部は通常、デフォルトで有効になっています。例えば、

# a comment<CR>
# 

ご覧のとおり、新しい行の先頭にはコメント文字が自動的に追加されています。 cの設定からrおよびformatoptionsを削除することにより、これらのオプションの大部分を無効にすることができます。見る :h fo-tableこれらのオプションの詳細については。

:set formatoptions-=cr

Vimには、ターミナルエミュレータの貼り付けメカニズムで貼り付けられたテキストと入力したテキストを区別する方法がありません。貼り付けオプションの設定(set paste)は、貼り付けられたテキストを予期し、望ましくない書式設定オプションを無効にするようにVimに指示します。

6
user26112

私のお気に入りはputコマンドを使用することです。

  • :put*現在の行の選択範囲から貼り付け
  • :put+現在の行のバッファから貼り付け

"*p/"+pも良いですが、:pu[t]にはいくつかの利点があります。

  • 常に線状に貼り付けます
  • 追加のパラメータを追加して、挿入する場所を制御できます。
    • :$put+最終行の後に貼り付け
    • :0put+ファイルの先頭に貼り付けます
3
defhlt

副次的な回答として、これが含まれているファイルがある場合は、垂直ビジュアルブロックモードを入力してファイルを取り除くことができます。

ctrl+v 矢印キー/ hjklを使用して、削除するパーツをナビゲートし、次に d

ときどき、貼り付けモードの設定を元に戻したり、貼り付けたり、設定を解除したりするよりも、これが早いと思います。

1
exussum