如何在Nano中使制表符变成4个空格而不是8个空格?


152

当我在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是一个非常基本的编辑器。很可能它不支持这一点。
millimoose12年

umm不仅在nano中,而且在Terminal中使用python解释器时,它还会缩进8个空格。
堕落的撒旦

2
这是在SuperUser上回答的,应作为重复项关闭:superuser.com/questions/110421/tab-character-width-in-terminal
millimoose 2012年

6
@millimoose,更改终端中的制表位不会影响nano。这个问题应该专门针对nano或有关为Python设置制表位的问题,而不是两者兼而有之,而不是与tab命令交互地设置制表位的问题,这并不影响所有程序。
克里斯·佩奇

Answers:


253

如果您将nano和python等语言结合使用(例如您的示例),将制表符转换为空格也是一个好主意。

编辑〜/ .nanorc文件(或创建文件)并添加:

set tabsize 4
set tabstospaces

如果您已经有一个带有选项卡的文件,并且想要将它们转换为空格,那么我建议使用expand命令(shell):

expand -4 input.py > output.py

我正在使用mint,当我在/ etc / nanorc中将tabsize从8设置为4并返回文件时,选项卡中仍然有8个空格,我什至尝试将nanorc文件复制到〜/。但这不起作用,请关闭并重新打开终端,但是除非使用nano -T4,否则仍然无法在选项卡上获得4个空格。谢谢
亚历克斯

@Alex仔细检查您的文件是否以点号.nanorcnot 开头nanorc。必须将其放置在用户的主目录中/home/your-username/.nanorc
Sven Rojek,2015年

1
谢谢,我最终在/ etc中创建了另一个与.etc不同的.nanorc,并将其放在主目录中并且可以正常工作。这是我在新的.nanorc中包含的仅有的3行内容,供感兴趣的任何人使用:设置nowrap,设置tabsize 4和设置tabstospaces
Alex

4
如果这是您的玩具,则可以在整个系统范围内进行此更改,只需编辑全局文件/etc/nanorc。您还可以享受其他一些选择。
fcm 2015年

嗨@Alexey。此Linux Shell命令适用于所有文件,但请确保指定另一个输出文件,否则将清空您的文件。
Sven Rojek '17

91

命令行标志

来自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每次启动时都会默认使用这些设置,但是命令行标志将覆盖它们。


嗯...我在〜/目录中找不到.nanorc文件
Fallen Satan

1
好的不要紧。我在/ etc目录中找到nanorc。虽则谢谢
堕落的撒旦

5
@FallenSatan,通常应该避免编辑/ etc / nanorc,除非您需要执行系统范围的定制。创建〜/ .nanorc(如果尚不存在)并将您的自定义项放在此处。
克里斯·佩奇

1
请注意,在上述答案中,您需要添加“ set tabsize 4”行,而不是“ set tabspace 4”行
Thomas N

1
sudo nano显然不会采用〜/ .nanorc;因此,命令行标志是解决该问题的更实用的方法。
user608800

11

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

set tabsize 4

设置标签空间给了我错误:'Unknown flag“ tabspace”'


4

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



0

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

我认为有一件事情需要解决。

~/.nanorc用于将您的用户特定设置应用于nano,因此,如果您要编辑需要使用sudo nanofor权限的文件,则此操作将无效。

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

如果您遇到这种情况(想要运行sudo nano 使用自己的配置设置),则可以使用以下三个选项:

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

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

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

同样,运行时/root/.nanorc将覆盖/etc/nanorcsudo nano

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.