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

时间:2020-03-06 14:34:38  来源:igfitidea点击:

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

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

(此外,如果无法更改此行为,欢迎其他优秀的HTML / PHP免费编辑器提出建议。)

解决方案

老实说,这对我来说似乎是预期的行为。我自己经常使用空行来打乱代码,使代码更具可读性,让程序使我不得不再次跳出代码将非常烦人。

我可以理解为这是对Python之类的挫败感,但对PHP则不是。。。但是,在大括号等之前,这可能很烦人。

试用Komodo Edit,它是免费的,而且我发现它通常对我来说是最适合自动缩进的。似乎已经学会了我的编码风格(或者在所有编码风格中都有选择,并且可以选择我们正在使用的语言)并自动正确缩进所有内容。

编辑:正如我们在答复中所指出的那样,问题在于"尾随空白",我不太了解Notepad ++,但是大多数设计用于编码的现代编辑器都有"保存时带尾随空白"的选项(我知道Komodo !)

我可以确认此问题发生在Notepad ++ 5.0.3版中。我发现的唯一相关设置是在"设置">"首选项">" MISC">"自动缩进"下,但这只是打开或者关闭所有自动缩进。

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

我在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>

两个警告:

  • 修剪宏是错误的。仅当光标在行尾时才起作用。我偶尔会考虑尝试修复它或者自己动手做,但永远不会被打扰,因为我在保存之前通过移动光标自己来自如地解决它。可以在"修剪并保存"宏中内置相同的解决方法。
  • 如果我们从"他们的"文件中删除结尾的空格,有些人会感到不高兴-是因为他们喜欢它,或者是因为他们有时使用diff而不忽略空格(例如在更改报告中)并且不想看到我们已更改实际上是单线的一半文件。因此,对于这些文件,只需保留尾随空白,并使用alt-f-s(或者我们保存到的"其他内容")保存而不是ctrl-s。我们可能需要将Notepad ++设置为在保存时不清除撤消缓冲区:否则此处的错误将带来一些灾难。但是我还是要设置。

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

Plugins > NppAutoIndent > Previous line

如果禁用此选项,则可能需要首先检查此选项:

Plugins > NppAutoIndent > Ignore language

修剪尾随空间和保存很烦人。我们会注意到,我们无意间在文档中插入了几个字符。

而是记录一个宏并将其绑定到ctrl + s。

这是操作方法:

  • 宏->开始录制
  • 编辑->修剪尾随空间
  • 文件->保存
  • 宏->停止记录
  • 宏->保存当前录制的宏(修剪和保存)
  • 设置->快捷方式映射器
  • 主菜单->保存-> Ctrl + Alt + Shift +保存
  • 宏->修剪并保存-> Ctrl + S

不幸的是,Notepad ++不会自动修剪第二个空的新行。但是,作为一种变通办法,我同意user108570的观点:宏将是完美的。

我喜欢在"软"换行和"硬"换行之间进行概念上的区分,类似于两种类型的标签。前者的输出取决于当前样式和缩进设置。但是,后者的输出应该始终是简单,纯净,纯净的香草换行符。

当然,最常使用的换行符应该映射到更简单的键组合。对于大多数编辑,我们可能希望将"软换行"映射为" Enter"键,并更改" Ctrl + Enter"以触发"硬换行"。

在"菜单->设置->快捷方式映射器->主菜单"中,我们会看到默认情况下" Ctrl + Enter"被映射为"单词完成"。首先需要通过将其映射为" None"来禁用它。

然后只需记录一个宏:

  • 菜单->宏->开始录制
  • 键盘-> Enter
  • 键盘->选项卡
  • 键盘-> Shift +主页
  • 键盘->删除
  • 菜单->宏->停止记录
  • 菜单->宏->保存当前录制的宏

最后一步将弹出一个对话框,我们可以在其中命名宏(例如"硬换行")并设置其映射(即" Ctrl + Enter")。

在步骤3中,我们可以添加任何内容(可打印)。它的唯一目的是添加一些要删除的内容(如果以前没有任何内容),以使光标后的所有文本保持不变。