-5

編集:この質問は、私の文章の質と長さを評価して「トルストイ」とタグ付けされていました:) 最初と最後の段落を読むだけで十分です:) マウスでコードを選択して移動する傾向がある場合は、真ん中はあなたにとって興味深いかもしれません。

この質問は、一般的なテキスト エディターの使用方法に関するものです。複数行のコードを削除する最良の方法を探しています (特許を取得するつもりはありません :) これは、行の入れ替え、つまり別の場所での削除と追加にまで及びます。最も重要なことは、個別に削除しなければならない空白行を作成したくないということです。Visual Studio の SHIFT+DELETE 機能に似ていますが、一度に複数の行に対して機能します。

次のコードから 3 行目を削除するとします (タブと改行も視覚化されます)。単純な方法は、山かっこの間のテキストを選択することです。

if (真) {\n
\t int i = 1;\n
\t <i *= 2;>\n
\ti += 3;\n
}\n

次に、バックスペースを押します。これにより、空白行が作成されます。\t と \n を削除するには、バックスペースをさらに 2 回押します。

最終的には次のようになります。

if (真) {\n
\t int i = 1;\n
\ti += 3;\n
}\n

行全体を選択しようとすると、Visual Studio では末尾の改行文字を選択できません。たとえば、行にカーソルを置いて SHIFT+END を押しても、最後の改行は選択されません。マウスを使用する場合、つまり、行の中央をクリックしてカーソルを右端までドラッグしても、改行は選択されません。少なくとも 2 行にわたる選択を行う場合は、末尾の改行文字のみを選択します。私が使用するほとんどのエディターは、この方法で行います。Microsoft WordPad と Word は反例です (そして、そこでテキストを削除するときに改行を間違えることがよくあります。少なくとも Word には、行末と段落の終わりの文字を明示的に表示する方法があります)。

一般的に Visual Studio やその他のエディターを使用する場合、現在私にとって最適なソリューションは次のとおりです。

マウスを使用して、山かっこで囲まれた文字を選択します。

if (真) {\n
\t int i = 1;<\n
\ti *= 2;>\n
\ti += 3;\n
}\n

ここでバックスペースを押すと、他の文字を削除することなく、行を一度に削除できます。これは、一度に複数の連続する行に対して機能します。また、行の移調にも使用できます。山かっこの間の選択を、キャレットでマークされたポイントにドラッグできます。

if (真) {\n
\t int i = 1;<\n
\ti *= 2;>\n
\ti += 3;^\n
}\n

これにより、次のものが残ります。

if (真) {\n
\t int i = 1;\n
\ti += 3;<\n
\ti *= 2;>\n
}\n

3 行目と 4 行目が入れ替わっています。

このテーマにはバリエーションがあります。行 3 を削除する場合は、次の文字も選択できます。

if (真) {\n
\t int i = 1;\n
<\ti *= 2;\n
>\ti += 3;\n
}\n

実際、行全体を選択するように Visual Studio に指示した場合、これが Visual Studio の動作です。これを行うには、コードと、ブレークポイントを示す赤い円がある列の間の余白をクリックします。マウス ポインターはその領域にミラーリングされて、もう少し見分けやすくなっていますが、狭すぎて、選択したいコードから物理的に離れすぎていると思います。

おそらく、この方法は、テキストを選択/削除するときに改行がどのように処理されるかを彼らに知らせるのに役立つだけであっても、他の人にも役立つでしょう:) ほとんどの非専門のテキストエディタでうまく機能します. ただし、Visual Studio には膨大な量の機能とプラグイン (私が最も使用しています) があるため、それを使用してコード行を削除および移動するためのより良い方法があると確信しています。異なるブロック間でコードを移動するときに自動的にインデントを正しく設定すると便利です (つまり、[ドキュメント/選択の書式設定] を押す必要はありません)。提案を楽しみにしています。マイクロ最適化について怒らないでください:)


回答のまとめ

Visual Studio に関して: カーソル キーでうまくナビゲートします。

コードを調べて編集する私のスタイルに最も適したソリューションは、Eclipseの方法です。

コードの連続する複数行を選択できます。最初と最後に選択した行は部分的にしか選択できません。ALT+{up,down} を押すと、行全体 (選択範囲だけでなく) が上下に移動し、インデントが修正されます。CTRL+D を押すと、不要な空白行を残さずに行が (選択範囲だけでなく) 完全に削除されます。これを Visual Studio で見たいです。

4

11 に答える 11

4

Emacs の場合:

  • キルラインCk
  • 転置行 Cx Ct

Ca Ck Ck -- 改行を含む行全体を (またはkill-whole-lineCS-backspace で) kill します。

Cu <number> Ck -- <number> 行 (改行を含む) を削除します。

Cy -- 最後に削除されたテキストをヤンクします (別名ペースト)

于 2008-09-13T17:08:00.077 に答える
4

VIM で:

  • 改行を含む行全体を削除します。dd
  • 行を転置:dd p

コマンドの先頭に番号を付けて繰り返すことができるので、10 行を削除するには、次のようにします。

10 dd

削除する行の範囲を指定することもできます。たとえば、10 行目から 15 行目を削除するには、次のようにします。

:10,15d

または、行を移動することもできます。たとえば、行 10 ~ 15 を行 20 の下に移動します。

:10,15m20

または、次の行をコピーできます。

:10,15t20
于 2008-09-13T17:22:16.220 に答える
3

私がやっていることは、行の先頭にあるカーソルから始めて (一部のエディターでは、これを行うためにホームを 2 回押す必要があります)、削除したいすべての行が選択されるまで、Shift キーを押しながら押し続けます。次に、削除を押します。

于 2008-09-13T17:35:25.547 に答える
2

ALTEclipseでは、行を移動することができます。- -{ , }と同様に、これは非常に便利で、行をコピーできます。さらに、クリップボードを破壊しません。行の移動に合わせてインデントも修正!ALTALTSHIFT

于 2008-09-13T17:18:04.280 に答える
1

既存のvim回答に追加すると、カーソル移動コマンドと一緒にdを使用して、カーソルの現在の位置から新しい位置まで削除できます。たとえば、削除するには...

  • ...段落の終わりまで (通常は「次の空白行まで」を意味します): d}
  • ...カーソルを含む行と次の 5 行: d5j
  • ...一連の括弧、中括弧などとその内容: d% (左または右の括弧/中括弧/その他にカーソルを置きます)
  • ...単語「foo」の 3 回目の出現まで: d3/foo

それは非常に柔軟です。

于 2008-09-29T06:30:13.497 に答える
1

カーソルキーの使い方を学びましょう。

行を移動するには、次のようにします。

  1. /を使用して、コピーする行に移動します。
  2. Homeまだそこにない場合はヒットし、カーソルが空白の後にある場合はもう一度ヒットします。
  3. 次にShift+を押して、移動する行を選択します。
  4. Ctrl+Xラインをカットします。
  5. 挿入したい行まで上下移動
  6. Ctrl+V

これは、Windows のほぼすべてのテキスト エディターで機能するはずです。

Ctrl行を削除するとき、私はまだ+を使用する傾向がありますX(バックスペースも使用していると思いますが)。

(私が Mac を使用していると、それらが方向感覚を失っていることがわかりますが、Apple は、Mac で Home/End を設定し、単語のショートカットをスキップする方法で何かに取り組んでいた可能性があると思います)

于 2008-09-13T17:33:49.687 に答える
0

Eclipseでは、CTRL+を使用Dして、多くの行の1行(または2行)を削除します。マウスまたはSHIFT+を使用してそれらを選択しARROW、キーを押しDELます。

于 2008-09-22T19:13:51.560 に答える
0

上記に加えて、Resharper forVisualStudioを使用して必要な処理を実行します。これまでにない最高のVSプラグイン。ここやあちこちでコードを移動/削除/コピーするのに役立つさまざまなコマンドを提供します。リファクタリング/生成/etcコードは言うまでもありません。

Ctrl---またはメソッドを上下に移動したり、上または下に並べたりし ます。---現在の行を削除しますが、クリップボードに入れます(これを行わないように設定を変更しない限りShift-これを思い出そうとしていますResharperだけでなく、VS標準のショートカットです-長すぎます)。 - 、-現在の行をコピー/カットすることを選択せず​​に。そして何度も...Alt ShiftDelCtrlCCtrlX

完全なリストについては、http://www.jetbrains.com/resharper/docs/ReSharper40DefaultKeymap2.pdfを参照してください。

于 2008-09-29T06:00:59.167 に答える
0

簡単なキーボード マッピングを使用すると、+AltL使用して行をマーク-し、テンキーのキー (またはAlt+D ) を使用して行をクリップボードに切り取ります。カットにより、改行文字を含む行が完全に削除されます。

テンキーパッドのInsキーを押すと、改行文字を含む行が文書に戻されます。

IMHO Briefは、非常にうまく設計されたキーボード マッピングです。

PS: MSVC には、ブリーフ キーボード マッピングをエミュレートするオプションがあると思います。

于 2008-09-18T03:37:19.030 に答える
0

Ctrl+ Shift+Lは行をバッファにコピーせずに削除します。

于 2011-04-06T11:41:25.103 に答える