Notepad ++:在空行后禁用自动缩进

时间:2008-09-23 01:57:28

标签: notepad++ indentation auto-indent

我发现Notepad ++的自动样式有点奇怪:当我在缩进行上键入时,我希望它在按Enter后缩进下一行(这样做正确)。但是,当我在一个空行(没有缩进,没有字符)并按Enter键时,它使用与最后一个非空行相同的缩进来缩进下一行。我发现这非常烦人;你遇到过这个问题吗?你知道如何修复它吗?

(注意:我正在编辑HTML / PHP文件。)

(另外,如果没有办法改变这种行为,欢迎提供其他HTML / PHP优秀免费编辑的建议。)

7 个答案:

答案 0 :(得分:23)

1)首先安装NppAutoIndent插件,如果你没有它。

  

插件>插件管理器>显示插件管理器,然后从该菜单的“可用”选项卡中安装NppAutoIndent

2)可以通过执行以下操作来关闭此行为:

  

插件> NppAutoIndent>上一行

3)如果禁用此选项,您可能需要先检查此选项:

  

插件> NppAutoIndent>忽略语言

答案 1 :(得分:14)

我可以确认Notepad ++版本5.0.3发生了这个问题。我找到的唯一相关设置是在设置>下偏好> MISC>自动缩进,但只是打开或关闭所有自动缩进。

我过去曾使用过Editra(http://editra.org)并对此感到满意,并且它似乎以您描述的方式处理缩进。

答案 2 :(得分:3)

我找到了另一种方式:

使用宏“修剪尾随并保存”快捷键“Alt + Shift + S”

我总是需要这个,只需将保存快捷方式与宏“Trim Trailing并保存”快捷方式交换。

我在编程时只倾向于使用记事本++,所以这对我很有用。

答案 3 :(得分:2)

不幸的是,Notepad ++没有自动修剪第二个空的新行。但是,作为一种解决方法,我同意user108570:宏将是完美的。

我喜欢在“soft”“hard”换行符之间进行概念上的区分,类似于两种类型的标签。前者的输出取决于当前样式和缩进设置。然而,后者的输出应该始终是一个简单,纯粹,纯粹的香草新线。

当然,最常用的换行风格应该映射到更简单的键组合。对于大多数编辑,您可能希望将“soft linefeed”映射到“Enter”键并更改“Ctrl + Enter”以触发“hard linefeed”。

在“菜单 - >设置 - >快捷键映射器 - >主菜单”中,您会看到默认情况下“Ctrl + Enter”映射到“Word完成”。这需要首先通过将其映射到“无”来禁用。

然后只记录一个宏:

  1. 菜单 - >宏 - >开始录制
  2. 键盘 - >输入
  3. 键盘 - >标签
  4. 键盘 - > Shift + Home
  5. 键盘 - >删除
  6. 菜单 - >宏 - >停止录制
  7. 菜单 - >宏 - >保存当前记录的宏
  8. 最后一步将弹出一个对话框,您可以在其中命名宏(例如“Hard Linefeed”)并设置其映射(即“Ctrl + Enter”)。

    在第3步,我们可以添加任何内容(可打印)。它的唯一目的是在之前没有任何内容的情况下添加要删除的内容,以便光标后面的任何文本都保持不变。

答案 4 :(得分:1)

我在Notepad ++中所做的是:

  • TexFX中有一个“修剪尾随空格”宏> TexFX编辑。
  • 使用它来构建“修剪并保存”宏。
  • 将该宏绑定到 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>

两个警告:

  • 修剪宏是错误的。它仅在光标位于行末尾时才有效。我偶尔会考虑尝试修复它或做我自己的,但永远不会被打扰,因为我在保存之前通过自己移动光标来反复解决它。可以在“修剪和保存”宏中构建相同的解决方法。

  • 如果你从“他们的”文件中删除尾随空格,有些人会感到沮丧 - 或者因为他们喜欢它,或者因为他们有时使用diff而不忽略空格(例如在更改报告中)并且不想看到你改变了一半文件,真的是一个单行。因此,对于这些文件,只需保留尾随空格,然后使用alt-f-s(或移动保存的“其他内容”)而不是ctrl-s进行保存。您可能需要将Notepad ++设置为不在保存时清除撤消缓冲区:否则此处的错误将是一个灾难。但无论如何我都设定了。

答案 5 :(得分:1)

修剪尾随空格和保存令人讨厌。你会注意到你无意中在文档中插入了几个字符。

而是录制宏并将其绑定到ctrl + s。

以下是如何操作:

  1. 宏 - &gt;开始录制
  2. 编辑 - &gt;修剪尾随空间
  3. 文件 - &gt;保存
  4. 宏 - &gt;停止录制
  5. 宏 - &gt;保存当前录制的宏(修剪和保存)
  6. 设置 - &gt;快捷方式映射器
  7. 主菜单 - &gt;保存 - &gt; Ctrl + Alt + Shift + Save
  8. Macros-&GT;修剪和保存 - &gt; Ctrl + S

答案 6 :(得分:0)

老实说,这对我来说似乎是预期的行为。我自己使用了很多空白行来分解代码以使其更具可读性,让程序让我不得不再次标记将非常烦人。

我可以理解这是对Python之类的挫折,但不是用PHP ...但是,在括号等之前这可能会很烦人。

尝试Komodo Edit然而,它是免费的,而且我发现它通常是我自动缩进的最佳选择。它似乎已经学习了我的编码风格(或者在所有编码风格中都有选项,并且它可以获取你正在使用的内容)并自动缩进所有内容。

编辑:正如你在回复中所提到的那样,问题在于“尾随空白” - 我不太了解Notepad ++,但大多数为编码设计的现代编辑器都有一个“保存时带尾随空格”选项(我知道Komodo会这样做!)