Vimのあるファイルのある部分から別の部分にコードをコピーすると、各行に行番号があり、フォーマットがなくなっていることがわかります。正しいフォーマットをOriginとして設定する方法は?
このような:
40 root /opt/release/current/public;
67 41 passenger_enabled on;
68 42
行番号がある場合、Vimのyank/put操作を使用していないと確信しています(これらはnever行番号、foldcolumn、アイコンなどをコピーします)。存在しない。
私の推測では、端末エミュレータで作業しており、マウスを使用してクリップボードにコピーします。これにより、画面の「余分な」部屋(最後の仮想スペース、行番号、折りたたみマーカーなど)が選択される可能性があります
運の設定があるかもしれません
:se mouse+=a
期待どおりにマウスの動作を取得するために。それ以外の場合は、選択を行います V<movement>...
y (y
のyank
。これは 'copy'に対応します)
次に、宛先で使用します p (カーソル位置に置く)、または P (カーソルの前に置く)
それが助けたのか、もっと情報が必要なのか教えてください
通常モードでは、:se nonu
これが行番号を削除する最も簡単な方法であり、行番号なしでテキストをコピーできます。
誰かがもっと速い方法を望む場合(とにかくLinuxで)、vimでctrlを押しながらコピーしたい領域をドラッグすると行番号を避けて欲しい部分を選択できることに気づきました。
ステップ:
これに対する永続的な解決策は、ホームディレクトリにある.vimrc
ファイルの最後に以下のコードを追加することです。
se mouse+=a
これを追加すると、次の画像に示すように、行番号ではなくテキストのみを選択できます。
ホームディレクトリに.vimrc
ファイルを取得していない場合(この問題に直面している場合)、viエディターで:scriptnames
コマンドを入力すると、.vimrc
ファイルの場所が表示されます。 参照
以前に入力したソリューションはすべて非常に優れたソリューションです。ただし、リモートサーバーでvimを使用している場合があります(したがって、"+y
を使用してクリップボードにコピーすることはできません)。多くの場合、端末はコピーペースト操作をサポートしています。
Vimを使用して、ターミナル機能を使用してテキストをコピーできる新しいシェルに視覚的な選択を出力します。
:'<,'>w ! bash -c cat
その後、出力を簡単にコピーできます。
Vimでの貼り付けと同じパターン:
:r ! bash -c cat
次に、EOFを使用して猫に貼り付けて送信します Ctrl+d。この方法では、貼り付けたテキストの再インデントも回避されます(注::set pi!
を使用して自動インデントを無効にできます)。
時々F11に設定されるpastetoggleオプションを見てください。
別の方法として、コピーするセクションを一時ファイルに常に書き込むことができます(ma
、行末に移動してから:'a,.w tempfile
)次に、2番目のファイルに読み込みます。
さらに詳しく調べるには、自動インデントオプションを確認することをお勧めします。
Windowsの場合VIM GUI::set nu
そして押し続ける Ctrl-Shift 目的のテキストをマウスで強調表示します。これにより、行番号がバッファにヤンクされます。
Macの場合:Option + Commandを使用して目的の領域を選択し、コピーして別のエディターに貼り付けることができることがわかりました。
以下のコマンドをキーにマッピングしました。
コピーされた行番号の周りの空白を取り除きます。
行テキストとその後ろの空白行を無視します。
:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
sed
とpbcopy
を使用して行をクリップボードにコピーし、vimの外部の別の端末またはアプリに貼り付けることもできます。
sed -n <line start #>,<line end #>p <file name> | pbcopy