【问题标题】:How to make the tab character 4 spaces instead of 8 spaces in nano?如何使制表符成为 4 个空格而不是 nano 中的 8 个空格?
【发布时间】:2012-06-25 18:57:10
【问题描述】:

当我在nano 编辑器中按 TAB 时,光标会跳出 8 个空格,如下所示:

def square(x):
        return x * x
def cube(y):
        return y * y * y

如何将制表位宽度设置为 4 个空格以显示如下:

def square(x):
    return x * x
def cube(y):
    return y * y * y

【问题讨论】:

  • Nano 是一个非常基础的编辑器。很有可能它不支持这一点。
  • umm 不仅在 nano 中,而且当我在终端中使用 python 解释器时,它还会缩进 8 个空格。
  • 这是在超级用户上回答的,应该作为重复关闭:superuser.com/questions/110421/tab-character-width-in-terminal
  • @millimoose,更改终端中的制表位不会影响 nano。这个问题应该专门关于 nano 或关于为 Python 设置制表位,但不是关于两者,也不是关于使用 tab 命令交互式设置制表位,这不会影响所有程序。

标签: tabs terminal indentation nano


【解决方案1】:

命令行标志

来自man nano

-T cols (--tabsize=cols)
    Set the size (width) of a tab to cols columns.
    The value of cols must be greater than 0. The default value is 8.
-E (--tabstospaces)
    Convert typed tabs to spaces.

例如,要将标签大小设置为 4,将标签替换为空格,并编辑文件“foo.txt”,您将运行以下命令:

nano -ET4 foo.txt

配置文件

来自man nanorc

set tabsize n
    Use a tab size of n columns. The value of n must be greater than 0.
    The default value is 8.
set/unset tabstospaces
    Convert typed tabs to spaces.

编辑您的~/.nanorc 文件(如果不存在则创建它),并将这些命令添加到其中。例如:

set tabsize 4
set tabstospaces

Nano 在启动时默认使用这些设置,但命令行标志会覆盖它们。

【讨论】:

  • 好吧,没关系。我在 /etc 目录中找到 nanorc。不过谢谢
  • @FallenSatan,通常您应该避免编辑 /etc/nanorc,除非您需要执行系统范围的自定义。如果 ~/.nanorc 尚不存在,则创建它并将您的自定义设置放在那里。
  • 请注意,在上面的答案中,您需要添加“set tabsize 4”这一行,而不是“set tabspace 4”
  • sudo nano 不接受 ~/.nanorc 的原因很明显;所以命令行标志是解决问题的更实际的解决方案。
  • 我觉得奇怪的是,这个答案在 8 年后仍未被接受。它确实内容丰富,并且描述得很好。
【解决方案2】:

在 nano 2.2.6 中, ~/.nanorc 中的行似乎是

set tabsize 4

设置制表空间给了我错误: '未知标志“tabspace”'

【讨论】:

    【解决方案3】:

    对于未来的查看者,我的 /etc/nanorc 文件中靠近第 153 行的一行写着“set tabsize 8”。这个词可能需要是 tabsize 而不是 tabspace。在我用 4 替换 8 并取消注释该行后,它解决了我的问题。

    【讨论】:

      【解决方案4】:

      如果您将 nano 与 python 之类的语言一起使用(如您的示例中所示),将制表符转换为空格也是一个好主意。

      编辑您的 ~/.nanorc 文件(或创建它)并添加:

      set tabsize 4
      set tabstospaces
      

      如果您已经有了一个带有制表符的文件并想将它们转换为空格,我推荐expandcommand (shell):

      expand -4 input.py > output.py
      

      【讨论】:

      • 我正在使用 mint,当我在 /etc/nanorc 中将 tabsize 从 8 设置为 4 并返回文件时,我仍然在选项卡中得到 8 个空格,我什至尝试复制那个 nanorc 文件到 ~/.但这不起作用,关闭并重新打开终端,但除非我使用 nano -T4,否则我仍然无法在选项卡上获得 4 个空格。谢谢
      • @Alex 仔细检查您的文件是否以点 .nanorc 而不是 nanorc 开头。这必须放在您的用户主目录中,即/home/your-username/.nanorc
      • 谢谢,我最终创建了另一个与 /etc 中的不同的 .nanorc,将其放置在主目录中并且有效。这是我在新的 .nanorc 中为感兴趣的人添加的唯一 3 行:set nowrap、set tabsize 4 和 set tabstospaces
      • 如果这是您的玩具,您可以在系统范围内使此更改可用,只需编辑全局文件 /etc/nanorc。您可能会喜欢其他一些选项。
      • 嗨@Alexey。此 Linux Shell 命令适用于所有文件,但请确保指定另一个输出文件,否则您的文件将被清空。
      【解决方案5】:

      在 nano 中设置标签大小

      cd /etc
      ls -a
      sudo nano nanorc
      

      链接:https://app.gitbook.com/@cai-dat-chrome-ubuntu-18-04/s/chuaphanloai/setting-the-tab-size-in-nano

      【讨论】:

      • 链接失效了,你有其他解释吗?
      • cd /etc;纳米纳米;设置tabsize 2 ...不幸的是,这不是需要空格的python所需要的
      【解决方案6】:

      对于任何可能偶然发现这个老问题的人......

      我认为需要解决一件事。

      ~/.nanorc 用于将您的用户特定设置应用于 nano,因此如果您正在编辑需要使用 sudo nano 获得权限的文件,那么这将不起作用。

      使用sudo 时,在打开程序时不会加载您的自定义用户配置文件,因为您没有从您的帐户运行该程序,因此您在~/.nanorc 中的任何配置更改都不会应用。

      如果您遇到这种情况(想要运行sudo nano 并且使用您自己的配置设置),那么您有三个选择:

      • 运行时使用命令行标志sudo nano
      • 编辑/root/.nanorc 文件
      • 编辑/etc/nanorc 全局配置文件

      请记住,/etc/nanorc 是一个全局配置文件,因此它会影响所有用户,这可能是也可能不是问题,具体取决于您是否拥有多用户系统。

      此外,用户配置文件将覆盖全局配置文件,因此如果您要使用不同的设置编辑 /etc/nanorc~/.nanorc,当您运行 nano 时,它将从 ~/.nanorc 加载设置,但如果您运行sudo nano 然后它将从/etc/nanorc 加载设置。

      /root/.nanorc 也是如此,这将在运行 sudo nano 时覆盖 /etc/nanorc

      除非您有很多选项,否则使用标志可能是最佳选择。

      【讨论】:

        猜你喜欢
        • 2019-01-29
        • 2010-12-06
        • 2017-02-07
        • 2011-09-12
        • 1970-01-01
        • 2017-07-30
        • 2018-08-28
        • 1970-01-01
        • 2022-07-12
        相关资源
        最近更新 更多