我发现 Notepad++ 的自动缩进风格有点奇怪:当我在缩进的行上打字时,我确实希望它在按下 Enter 后缩进下一行(它确实如此)。但是,当我在一个空行(没有缩进,没有字符)并按 Enter 键时,它会缩进下一行,使用与最后一个非空行相同的缩进。我觉得这非常烦人;你有没有遇到过这个问题,你知道如何解决吗?
(注意:我正在编辑 HTML/PHP 文件。)
(此外,欢迎其他优秀的 HTML/PHP 免费编辑器的建议,以防无法改变这种行为。)
我发现 Notepad++ 的自动缩进风格有点奇怪:当我在缩进的行上打字时,我确实希望它在按下 Enter 后缩进下一行(它确实如此)。但是,当我在一个空行(没有缩进,没有字符)并按 Enter 键时,它会缩进下一行,使用与最后一个非空行相同的缩进。我觉得这非常烦人;你有没有遇到过这个问题,你知道如何解决吗?
(注意:我正在编辑 HTML/PHP 文件。)
(此外,欢迎其他优秀的 HTML/PHP 免费编辑器的建议,以防无法改变这种行为。)
1) 如果没有,请先安装 NppAutoIndent 插件。
插件 > 插件管理器 > 显示插件管理器,然后从该菜单的“可用”选项卡安装 NppAutoIndent 。
2)可以通过执行以下操作来关闭此行为:
插件 > NppAutoIndent > 上一行
3)如果禁用此选项,您可能需要先检查此选项:
插件 > NppAutoIndent > 忽略语言
我可以确认 Notepad++ 版本 5.0.3 会发生此问题。我发现的唯一相关设置是在“设置”>“首选项”>“其他”>“自动缩进”下,但这只会打开或关闭所有自动缩进。
我过去使用过 Editra ( http://editra.org ) 并且对它很满意,它似乎可以按照您描述的方式处理缩进。
我找到了另一种方法:
使用宏“修剪尾随并保存”快捷键“Alt + Shift + S”
我一直需要这个,只需将保存快捷方式与宏“修剪尾随并保存”快捷方式交换即可。
我只在编程时倾向于使用记事本++,所以这对我来说很有效。
不幸的是 Notepad++ 不会自动修剪第二个空的新行。但是,作为一种解决方法,我同意user108570:宏将是完美的。
我喜欢在“软”和“硬”换行之间做出概念上的区分,类似于这两种类型的选项卡。前者的输出取决于当前的样式和缩进设置。然而,后者的输出应该始终是一个简单、纯粹、普通的新行。
当然,最常用的换行风格应该映射到更简单的组合键。对于您的大部分编辑,您可能希望将“软换行”映射到“Enter”键并更改“Ctrl+Enter”以触发“硬换行”。
在“菜单 -> 设置 -> 快捷方式映射器 -> 主菜单”中,您将看到默认情况下“Ctrl+Enter”映射到“单词补全”。这需要首先通过将其映射到“无”来禁用。
然后简单地录制一个宏:
最后一步将弹出一个对话框,您可以在其中命名宏(例如“硬换行”)并设置其映射(即“Ctrl+Enter”)。
在第 3 步,我们可以添加任何内容(可打印)。它的唯一目的是在之前没有任何内容的情况下添加要删除的内容,以便光标后面的任何文本都保持不变。
我在 Notepad++ 中所做的是:
我会告诉你如何录制一个使用另一个宏的宏,但几年前我做到了,现在我只是复制文件。我希望它可以正常工作,或者我可能通过手动编辑快捷方式文件来做到这一点。它看起来像这样(在 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-fs(或您移动保存到的“其他东西”)而不是 ctrl-s 保存。您可能需要将 Notepad++ 设置为不要在保存时清除撤消缓冲区:否则这里的错误将是一场灾难。但我还是这样设置的。
修剪尾随空间并保存很烦人。您会注意到您无意中在文档中插入了几个字符。
而是记录一个宏并将其绑定到您的 ctrl + s。
这是如何做到的:
老实说,这对我来说似乎是预期的行为。我自己经常使用空行来分解代码以使其更具可读性,让程序让我不得不再次标记出来会非常烦人。
我可以将其理解为对 Python 之类的挫败感,但对 PHP 则不然……尽管在大括号等之前,这可能很烦人。
然而,试试Komodo Edit,它是免费的,而且我发现它通常对我来说是自动缩进的最佳选择。它似乎已经学会了我的编码风格(或者它有所有编码风格的选项,它会选择你正在使用的东西)并自动正确缩进所有内容。
编辑:正如您在回复中指出的那样,问题出在“尾随空格” - 我不太了解 Notepad++,但大多数为编码而设计的现代编辑器都有“保存时去除尾随空格”选项(我知道 Komodo做!)