web-dev-qa-db-ja.com

Notepad ++:空行の後の自動インデントを無効にする

Notepad ++の自動インデントスタイルが少し変だと思います。インデントされた行で入力すると、Enterキーを押した後、次の行をインデントしますdo(適切に機能します)。ただし、空行(インデントなし、文字なし)でEnterキーを押すと、最後の空でない行と同じインデントを使用して次の行がインデントされます。これは非常に迷惑だと思います。この問題に遭遇したことがあり、それを修正する方法を知っていますか?

(注:HTML/PHPファイルを編集しています。)

(また、この動作を変更する方法がない場合に備えて、HTML/PHP用の他の優れた無料エディターの提案を歓迎します。)

37
Laurent

1)NppAutoIndentプラグインがない場合は、最初にインストールします。

プラグイン>プラグインマネージャー>プラグインマネージャーを表示し、そのメニューの[利用可能]タブからinstall NppAutoIndentを選択します。

2)この動作は、次のようにしてオフにすることができます。

プラグイン> NppAutoIndent>前の行

3)このオプションが無効になっている場合は、最初にこのオプションを確認する必要があります。

プラグイン> NppAutoIndent>言語を無視

24
Marv3lz

この問題がNotepad ++バージョン5.0.3で発生することを確認できます。私が見つけた唯一の関連する設定は[設定]> [設定]> [MISC]> [自動インデント]にありますが、自動インデントをすべてオンまたはオフにするだけです。

私は過去にEditra( http://editra.org )を使用したことがあり、満足しており、あなたが説明している方法でインデントを処理しているようです。

16

私は別の方法を見つけました:

マクロ「Trim Trailing and save」のショートカット「Alt + Shift + S」を使用します

常にこれが必要な場合は、保存ショートカットをマクロ「Trim Trailing and save」ショートカットと交換するだけです。

私はプログラミング時にNotepad ++のみを使用する傾向があるため、これは私にとってはうまく機能します。

3
b01

Notepad ++が2番目の空の新しい行を自動的にトリミングしないのは残念です。しかし、回避策として、私は ser10857 に同意します。マクロは完璧です。

2種類のタブと同様に、 "soft" "hard"の改行を概念的に区別したい。前者の出力は、現在のスタイルとインデント設定に依存します。ただし、後者の出力は常に、単純で純粋なバニラの改行です。

もちろん、最も頻繁に使用される改行の種類は、より単純なキーの組み合わせにマップする必要があります。ほとんどの編集では、「ソフトラインフィード」を「Enter」キーにマップしたままにし、「Ctrl + Enter」を変更して「ハードラインフィード」をトリガーすることをお勧めします。

「メニュー->設定->ショートカットマッパー->メインメニュー」では、デフォルトで「Ctrl + Enter」が「単語補完」にマッピングされていることがわかります。これを最初に「なし」にマッピングして無効にする必要があります。

次に、単にマクロを記録します。

  1. メニュー->マクロ->記録の開始
  2. キーボード-> Enter
  3. キーボード->タブ
  4. キーボード-> Shift + Home
  5. キーボード->削除
  6. メニュー->マクロ->記録の停止
  7. メニュー->マクロ->現在記録されているマクロを保存

最後の手順では、マクロに名前を付け(「ハードラインフィード」など)、そのマッピングを設定する(「Ctrl + Enter」など)ダイアログを表示します。

ステップ3では、何でも追加できます(印刷可能)。その唯一の目的は、以前に何もなかった場合に削除するものを追加して、カーソルに続くテキストが変更されないようにすることです。

2
Dejan Budimir

Notepad ++で私がすることは:

  • TexFX> TexFX Editに「末尾のスペースを削除」マクロがあります。
  • これを使用して、「トリムして保存」マクロを作成します。
  • そのマクロをバインドします CTRL+S、「保存」を他の何かにバインドします。

別のマクロを使用するマクロを記録する方法を説明しますが、数年前にそれを実行し、ファイルをコピーするだけです。私はそれがちょうどうまくいくことを期待しています、またはおそらく私は手動でショートカットファイルを編集してそれをしました。次のようになります(shortcuts.xml内):

<Macro name="Trim and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>

2つの警告:

  • トリムマクロにはバグがあります。使用時にカーソルが行末にある場合にのみ機能します。ときどき自分で修正したり自分でやろうと思ったりしますが、保存する前に自分でカーソルを動かして反射的に回避しているので、気になりません。同じ回避策を「トリムして保存」マクロに組み込むこともできます。

  • 一部の人々は、「自分の」ファイルから末尾の空白を削除すると、動揺します。それは、好きなため、または(たとえば、変更レポートで)空白を無視せずにdiffを使用していて、変更したことを知りたくないためです本当にそれがワンライナーだったときの半分のファイル。したがって、それらのファイルについては、末尾の空白をそのままにして、ctrl-sの代わりにalt-f-s(または保存先の「何か」)で保存します。おそらく、保存時に元に戻すバッファーをクリアしないようにNotepad ++を設定する必要があります。それ以外の場合、ここでの間違いは少し厄介です。しかし、とにかくそれを設定しました。

1
Steve Jessop

末尾のスペースをトリミングして保存するのは面倒です。意図せずにいくつかの文字をドキュメントに挿入していることに気づくでしょう。

代わりに、マクロを記録してctrl + sにバインドします。

これを行う方法は次のとおりです。

  1. マクロ->記録を開始
  2. 編集->末尾のスペースをトリム
  3. ファイル->保存
  4. マクロ->記録を停止
  5. マクロ->現在記録されているマクロを保存(トリムして保存)
  6. 設定->ショートカットマッパー
  7. メインメニュー->保存-> Ctrl + Alt + Shift +保存
  8. マクロ->トリミングして保存-> Ctrl + S
1
user108570

正直なところ、これは私には予想される動作のようです。空白行は、コードを分割して読みやすくするために自分でよく使用されます。プログラムでもう一度タブを付けなければならないのは非常に煩わしいでしょう。

私はこれをPythonのようなものでフラストレーションとして理解できますが、PHPではできません...しかし、中括弧などの前にこれは煩わしいかもしれません。

試してみてください Komodo Edit しかし、それは無料であり、私にとっては自動インデントに最適であることがわかりました。それは私のコーディングスタイルを学習したようです(またはすべてのコーディングスタイルのオプションがあり、使用しているものを取得します)、すべてを自動的に正しくインデントします。

編集:返信で指摘したように、問題は「末尾の空白」にあります-Notepad ++はあまりよくわかりませんが、コーディング用に設計されたほとんどの最近のエディターには、「保存時に末尾の空白をストリップする」オプションがあります(Komodoは知っています)します!)

0
Mez