web-dev-qa-db-ja.com

コピーするときにVimの行番号をクリアする方法は?

Vimのあるファイルのある部分から別の部分にコードをコピーすると、各行に行番号があり、フォーマットがなくなっていることがわかります。正しいフォーマットをOriginとして設定する方法は?

このような:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 
57
why

行番号がある場合、Vimのyank/put操作を使用していないと確信しています(これらはnever行番号、foldcolumn、アイコンなどをコピーします)。存在しない。

私の推測では、端末エミュレータで作業しており、マウスを使用してクリップボードにコピーします。これにより、画面の「余分な」部屋(最後の仮想スペース、行番号、折りたたみマーカーなど)が選択される可能性があります

運の設定があるかもしれません

:se mouse+=a

期待どおりにマウスの動作を取得するために。それ以外の場合は、選択を行います V<movement>...y (yyank。これは 'copy'に対応します)

次に、宛先で使用します p (カーソル位置に置く)、または P (カーソルの前に置く)

それが助けたのか、もっと情報が必要なのか教えてください

81
sehe

通常モードでは、:se nonu

これが行番号を削除する最も簡単な方法であり、行番号なしでテキストをコピーできます。

33
Sandeep Singh

誰かがもっと速い方法を望む場合(とにかくLinuxで)、vimでctrlを押しながらコピーしたい領域をドラッグすると行番号を避けて欲しい部分を選択できることに気づきました。

ステップ

  1. ctrlキーを押しながらエリアをドラッグ
  2. リリースCtrl
  3. コピー(キーボードショートカットまたは右クリック)
21
sij_a

これに対する永続的な解決策は、ホームディレクトリにある.vimrcファイルの最後に以下のコードを追加することです。

se mouse+=a

これを追加すると、次の画像に示すように、行番号ではなくテキストのみを選択できます。

enter image description here


ホームディレクトリに.vimrcファイルを取得していない場合(この問題に直面している場合)、viエディターで:scriptnamesコマンドを入力すると、.vimrcファイルの場所が表示されます。 参照

11
Sandeep

以前に入力したソリューションはすべて非常に優れたソリューションです。ただし、リモートサーバーでvimを使用している場合があります(したがって、"+yを使用してクリップボードにコピーすることはできません)。多くの場合、端末はコピーペースト操作をサポートしています。

Vimを使用して、ターミナル機能を使用してテキストをコピーできる新しいシェルに視覚的な選択を出力します。

:'<,'>w ! bash -c cat

その後、出力を簡単にコピーできます。

Vimでの貼り​​付けと同じパターン:

:r ! bash -c cat

次に、EOFを使用して猫に貼り付けて送信します Ctrl+d。この方法では、貼り付けたテキストの再インデントも回避されます(注::set pi!を使用して自動インデントを無効にできます)。

5
Lynch

時々F11に設定されるpastetoggleオプションを見てください。

別の方法として、コピーするセクションを一時ファイルに常に書き込むことができます(ma、行末に移動してから:'a,.w tempfile)次に、2番目のファイルに読み込みます。

さらに詳しく調べるには、自動インデントオプションを確認することをお勧めします。

4
ColWhi

Windowsの場合VIM GUI::set nuそして押し続ける Ctrl-Shift 目的のテキストをマウスで強調表示します。これにより、行番号がバッファにヤンクされます。

1
Gaurav

Macの場合:Option + Commandを使用して目的の領域を選択し、コピーして別のエディターに貼り付けることができることがわかりました。

以下のコマンドをキーにマッピングしました。
コピーされた行番号の周りの空白を取り除きます。
行テキストとその後ろの空白行を無視します。

:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
0
bilyboy65

sedpbcopyを使用して行をクリップボードにコピーし、vimの外部の別の端末またはアプリに貼り付けることもできます。

sed -n <line start #>,<line end #>p <file name> | pbcopy

0
Steven Tsao