37

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

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

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

4

8 に答える 8

27

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

Plugins > Plugin Manager > Show Plugin Manager を選択し、そのメニューの「Available」タブからNppAutoIndent をインストールします。

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

プラグイン > NppAutoIndent > 前の行

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

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

于 2008-12-06T12:43:39.133 に答える
18

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

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

于 2008-09-23T02:09:34.917 に答える
3

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

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

これは常に必要です。保存ショートカットをマクロの「末尾をトリムして保存」ショートカットと交換するだけです。

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

于 2013-01-28T14:22:37.823 に答える
2

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

2 種類のタブと同様に、「ソフト」改行と「ハード」改行を概念的に区別したいと思います。前者の出力は、現在のスタイルとインデントの設定によって異なります。ただし、後者の出力は、常に単純で、混じりけのない、プレーンなバニラ改行でなければなりません。

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

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

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

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

最後のステップでは、マクロに名前を付け (例: "Hard Linefeed")、そのマッピングを設定する (例: "Ctrl+Enter") ダイアログが表示されます。

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

于 2010-05-19T12:40:02.453 に答える
1

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-fs(または保存先に移動した「他の何か」)で保存します。保存時に元に戻るバッファをクリアしないようにNotepad++を設定する必要があります。そうしないと、ここでの間違いはちょっとした惨事になります。しかし、とにかくそれを設定しました。

于 2008-09-23T03:12:55.230 に答える
0

正直なところ、これは私には予想される動作のようです。空白行は、コードを分割して読みやすくするために自分でよく使用します。プログラムでもう一度タブアウトする必要があると、非常に面倒です。

これは Python のようなものに対するフラストレーションとして理解できますが、PHP ではそうではありません。

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

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

于 2008-09-23T02:02:49.067 に答える