25

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

行末へのヤンクやコードブロックの最後へのヤンクは簡単にできますが、テキストが多くの画面にまたがったり、空行がたくさんある場合は、自分のように感じます。手はVimで縛られています。解決策はありますか?

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

4

16 に答える 16

24

まず第一にvim、マウスで作業するように設定できます。これにより、 と同じようにテキストを選択できますEclipse

デフォルトでは、ビジュアル選択 - を使用することもできvます。選択したらyankcut、 などを実行できます。

ブロックをコメントアウトする限り、私は通常それをVISUALで選択してから実行します

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

各行の先頭を#. ('<'>マーカーは、視覚的な選択の開始と と です。

于 2008-09-12T10:02:39.373 に答える
19

マーカーを使用します。

削除するテキスト ブロックの先頭に移動して入力します

ma

その行のどこにでも。コロンはいらない。

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

:'a,.d

入力すると、カーソル下の文字にmaマーカーが設定されます。a

テキストブロックの一番下に移動した後に入力したコマンドは、「マーカーa( 'a) によって記述された文字を含む行から現在の行 ( .) delete まで」という意味です。

この種のものは、他のものにも使用できます。

:'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++)

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

于 2008-09-12T10:18:04.717 に答える
17

CTRLコメントを挿入するには、 -を使用して行の先頭文字を選択しますv(「v」文字ごとの視覚的または「V」行ごとの視覚的ではなく、ブロックごとの視覚的)。次に、「I」を使用して挿入モードに移動し、最初の行にコメント文字(たとえば、「#」)を入力し、最後に「Esc」を使用して通常モードにエスケープします。出来上がり!

コメントを削除するには、blockwise-visualを使用してコメントを選択し、''を使用してコメントを削除しますx

于 2008-09-12T11:29:26.357 に答える
8

Use the visual block command v (or V for whole lines and C-V for rectangular blocks). While in visual block mode, you can use any motion commands including search; I use } frequently to skip to the next blank line. Once the block is marked, you can :w it to a file, delete, yank, or whatever. If you execute a command and the visual block goes away, re-select the same block with gv. See :help visual-change for more.

I think there are language-specific scripts that come with vim that do things like comment out blocks of code in a way that fits your language of choice.

于 2008-09-12T10:01:05.180 に答える
4

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

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

選択してください。

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

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

ESC。

于 2008-09-12T12:57:01.997 に答える
4

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

于 2008-09-12T10:05:37.557 に答える
4

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

プラグインを使わずにブロックをコメントアウトする便利な方法もあります。Python で作業していて、# がコメント文字であるとしましょう。ハッシュ記号を入れたい列の視覚的なブロック選択を行い、I#ESCAPE と入力します。ビジュアル ブロック モードに入るには、Windows では Cq、Linux では Cv を押します。

于 2008-09-12T10:12:16.183 に答える
3

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

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

于 2008-09-12T11:06:05.227 に答える
3

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

拡張コメント化

NERD コメンター

最近は NERD を使用することが増えていますが、EnhancedCommentify を何年も使用しています。

于 2009-02-20T18:08:39.580 に答える
2

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

:20,200d

行20から200を、行300がある場所に移動するには、次のコマンドを使用できます。

:20,200m300

等々。

于 2009-02-18T09:26:23.110 に答える
2

Use Shift+V to go in visual mode, then you can select lines and delete / change them.

于 2008-09-12T10:01:37.533 に答える
1

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

:。、+ 40s / ^ /#/

(ここでは40行先まで、行頭をハッシュ、スペースに置き換えてください)他のいくつかの方法よりも少し長いようですが、私はマウスではなくキーボードを使って作業するのが好きです。

于 2008-09-15T18:38:41.043 に答える
1

CTRL通常モードのコマンド [count] -に注意してください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 も同じように機能しますが、上にスクロールします。

于 2008-11-08T15:40:36.330 に答える
1

最初の答えは現在、まったく正しくありませんか? 選択をコメントアウトするには、':' を押してコマンド :'<,'>s/^/# /g を入力します

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

于 2010-06-09T16:27:47.317 に答える
0

マークは、開始したい場所と終了したい場所の最も単純なmbになりますこれが完了したら、ほとんど何でもできます。

:'b,'ed

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

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

V40j:s/^/#/

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

于 2008-09-15T18:46:40.307 に答える
0

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

于 2008-09-12T10:03:43.630 に答える