Vim で、マルチスクリーン テキストの大部分を選択、削除、またはコメントアウトする最善の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

質問

Eclipse のような IDE で多くの画面にまたがる大量のテキストを選択するのは、マウスを使用できるため非常に簡単ですが、たとえば、マルチスクリーンのテキスト ブロックを選択して削除するか、たとえば書き込みます。マウスを使用できない putty/ssh 経由で Vim を使用する場合、3 つの大きなメソッドを別のファイルに出力し、Vim でテスト目的で削除しますか?

行末にヤンクしたり、コードブロックの末尾にヤンクしたりすることは簡単にできますが、テキストが多くの画面にまたがっていたり、テキストに多くの空白行が含まれている場合は、自分のような感じになります。 Vim では両手が縛られています。何か解決策はありますか?

そして関連する質問:ほとんどのIDEで一般的であるように、何らかの方法で40行を選択し、それらすべてを(「#」または「//」で)コメントアウトする方法はありますか?

役に立ちましたか?

解決

さて、まず最初に設定できるのは、 vim マウスを操作すると、通常の場合と同じようにテキストを選択できます。 Eclipse.

ビジュアル選択を使用することもできます - v, 、デフォルトでは。選択すると、次のことができます yank, cut, 、など。

ブロックをコメントアウトする限り、通常は次のように選択します。 VISUAL, 、その後、実行します

:'<,'>s/^/# /

各行の先頭を #. 。( '< そして '> マーカーは視覚的な選択の始まりとなります。

他のヒント

マーカーを使用します。

削除したいテキストブロックの先頭に移動し、次のように入力します。

ma

その線上のどこでも。コロンは必要ありません。

次に、ブロックの最後に移動して、次のように入力します。

:'a,.d

入る ma マーカーを設定しました a カーソルの下の文字。

テキストブロックの一番下に移動して入力したコマンドは、「マーカーで記述された文字を含む行から」となります。 a ('ある) 現在の行 (.) dエレテ。」

このようなものは他のことにも使えます。

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

注: 'a (アポストロフィ-a) は、でマークされた文字を含む行を指します。 a. 。「あ」(backtick-a) refers to the character marked byああ。

コメントを挿入するには、行の先頭文字を選択します。 CTRL-v (「v」文字ごとのビジュアルや「V」行ごとのビジュアルではなく、ブロックごとのビジュアルです)。次に、「I」を使用して挿入モードに移動し、最初の行にコメント文字 (「#」など) を入力し、最後に「Esc」を使用して通常モードに戻ります。出来上がり!

コメントを削除するには、blockwise-visual を使用してコメントを選択し、' を使用して削除するだけです。バツ'.

ビジュアル ブロック コマンド v (または行全体の場合は V) を使用し、 C-V 長方形ブロックの場合)。ビジュアル ブロック モードでは、検索を含むあらゆるモーション コマンドを使用できます。私は次の空行にスキップするために } を頻繁に使用します。ブロックがマークされると、それをファイルに保存したり、削除したり、ヤンクしたりすることができます。コマンドを実行してビジュアル ブロックが消えた場合は、gv で同じブロックを再選択します。詳細については、:help Visual-change を参照してください。

vim には、選択した言語に合わせてコード ブロックをコメントアウトするような、言語固有のスクリプトが付属していると思います。

プレス V (大文字の V) を押してから、 40j で40行を選択し、 を押します。 d をクリックして削除します。または、@zigdon が返信したように、コメントアウトすることもできます。

ビジュアル モードは、主な問題の解決策です。コードのセクションをコメントアウトすることに関しては、vim.org にそのためのプラグインが多数あります。私は現在 tComment.vim を使用しています。

プラグインを使用せずにブロックをコメントアウトする巧妙な方法もあります。あなたが Python で作業しており、# がコメント文字であるとします。ハッシュ記号を入れたい列を視覚的にブロック選択し、「I#ESCAPE」と入力します。ビジュアル ブロック モードに入るには、Windows では C-q を押すか、Linux では C-v を押します。

あるいは、このスクリプトを試してみることもできます...

http://www.vim.org/scripts/script.php?script_id=23

私のブロックコメントテクニック:

Ctrl+V ブロックごとのビジュアルモードを開始します。

選択してください。

選択がまだアクティブな状態で、 シフト+. 。これにより、列挿入モードになります。

コメント文字「#」または「//」などを入力します。

ESC。

行範囲に対してアクションを実行する必要があり、行番号がわかっている場合は、コマンド ラインに範囲を指定できます。たとえば、20 行目から 200 行目を削除するには、次のようにします。

:20,200d

20 行目から 200 行目を 300 行目の位置に移動するには、次のコマンドを使用します。

:20,200m300

等々。

行をコメントアウトするには、次のプラグインのいずれかを推奨します。

強化されたコメント

オタクのコメンター

最近は NERD を使用することが多くなりましたが、EnhancedCommentify を何年も使用してきました。

使用 シフト+V ビジュアルモードにすると、行を選択して削除/変更できます。

40 行をコメントアウトする私の通常の方法は、最初の行にカーソルを置き、次のコマンドを入力することです。

:.,+40s/^/# /

(ここでは40ラインを通過する場合、ハッシュ、スペースを使用したスタートの代わりになります)他の方法よりも少し長いように見えますが、マウスの代わりにキーボードで物事をするのが好きです。

最初の答えは現時点では正しくありませんか?選択]プレスをコメントするには ':'とタイプコマンド: '<、'> s/^/#/g

('<, '> - 自動的に表示されます)

通常モードのコマンド [count] に注意してください。CTRL-D。オプションで「scroll」オプションを 10 から [count] に変更し、その行数だけ下にスクロールします。プレス中 CTRL-D もう一度同じ行を下にスクロールします。

それで入力してみてください

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U も同様に機能しますが、上にスクロールします。

v ビジュアル・ブロック・モードに入ります。このモードでは、ほとんどの一般的なエディターで Shift を使用しているかのように選択できます。その後、通常のコマンド (置換:'<,'>s/^/#/ を使用してコメントを付加します) で実行できることはすべて実行できます。 、例) ここで、「<,」> は、すべてのテキストではなく、選択されたビジュアル ブロックを意味します。

マークが最も簡単でしょう MB どこから始めたいのか、そして 自分 これが完了したらどこで終わりたいですか、あなたがやりたいことはほとんど何でもできます

:'b,'ed

マーカーから削除します b マーカーに e

ビジュアルモードで実行できる40行のコメントアウト

V40j:s/^/#/

シーケンスの開始位置から 40 行をコメントアウトします

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top