37

我发现 Notepad++ 的自动缩进风格有点奇怪:当我在缩进的行上打字时,我确实希望它在按下 Enter 后缩进下一行(它确实如此)。但是,当我在一个空行(没有缩进,没有字符)并按 Enter 键时,它会缩进下一行,使用与最后一个非空行相同的缩进。我觉得这非常烦人;你有没有遇到过这个问题,你知道如何解决吗?

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

(此外,欢迎其他优秀的 HTML/PHP 免费编辑器的建议,以防无法改变这种行为。)

4

8 回答 8

27

1) 如果没有,请先安装 NppAutoIndent 插件。

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

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

插件 > NppAutoIndent > 上一行

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

插件 > NppAutoIndent > 忽略语言

于 2008-12-06T12:43:39.133 回答
18

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

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

于 2008-09-23T02:09:34.917 回答
3

我找到了另一种方法:

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

我一直需要这个,只需将保存快捷方式与宏“修剪尾随并保存”快捷方式交换即可。

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

于 2013-01-28T14:22:37.823 回答
2

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

我喜欢在“软”“硬”换行之间做出概念上的区分,类似于这两种类型的选项卡。前者的输出取决于当前的样式和缩进设置。然而,后者的输出应该始终是一个简单、纯粹、普通的新行。

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

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

然后简单地录制一个宏:

  1. 菜单 -> 宏 -> 开始录制
  2. 键盘 -> 输入
  3. 键盘 -> 选项卡
  4. 键盘 -> Shift + Home
  5. 键盘 -> 删除
  6. 菜单 -> 宏 -> 停止录制
  7. 菜单 -> 宏 -> 保存当前录制的宏

最后一步将弹出一个对话框,您可以在其中命名宏(例如“硬换行”)并设置其映射(即“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>

两个警告:

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

  • 如果你从“他们的”文件中去掉尾随空格,有些人会感到不安——要么是因为他们喜欢它,要么是因为他们有时使用 diff 而不忽略空格(例如在更改报告中)并且不想看到你已经改变了文件的一半,而实际上它是单行的。因此,对于这些文件,只需将尾随空格保持原样并使用 alt-fs(或您移动保存到的“其他东西”)而不是 ctrl-s 保存。您可能需要将 Notepad++ 设置为不要在保存时清除撤消缓冲区:否则这里的错误将是一场灾难。但我还是这样设置的。

于 2008-09-23T03:12:55.230 回答
1

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

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

这是如何做到的:

  1. 宏 -> 开始录制
  2. 编辑 -> 修剪尾随空格
  3. 文件 -> 保存
  4. 宏 -> 停止录制
  5. 宏 -> 保存当前录制的宏(修剪并保存)
  6. 设置->快捷方式映射器
  7. 主菜单 -> 保存 -> Ctrl + Alt + Shift + 保存
  8. 宏-> 修剪并保存-> Ctrl + S
于 2009-07-22T15:49:21.967 回答
0

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

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

然而,试试Komodo Edit,它是免费的,而且我发现它通常对我来说是自动缩进的最佳选择。它似乎已经学会了我的编码风格(或者它有所有编码风格的选项,它会选择你正在使用的东西)并自动正确缩进所有内容。

编辑:正如您在回复中指出的那样,问题出在“尾随空格” - 我不太了解 Notepad++,但大多数为编码而设计的现代编辑器都有“保存时去除尾随空格”选项(我知道 Komodo做!)

于 2008-09-23T02:02:49.067 回答
0

您可以参考此设置并注意“标签大小”。 在此处输入图像描述

于 2021-11-27T11:24:13.027 回答