打开文件时如何在nano中显示行号

Lui*_*ado 357 nano

有没有办法告诉 nano 在每次打开文件时自动显示行号?

fos*_*dom 374

使用 nano 时显示当前行号的键盘组合是CTRL+ C

或者,要显示行和列号位置,您可以-c在启动 nano 时使用该参数,即:

nano -c [filename]
Run Code Online (Sandbox Code Playgroud)

要使其永久化,请nano使用您的主文件夹中的配置~/.nanorc

因此在使用 nano 时总是显示行号......

nano ~/.nanorc
Run Code Online (Sandbox Code Playgroud)

(如果它是空的,请不要担心 - 默认情况下该文件不存在)

类型 set constantshow

注意不推荐使用的语法set const显示在动画中

节省

在此处输入图片说明


动画1

由于您使用的是行号,请记住您可以使用ALT+G跳转到特定的行号。

  • 请注意,`-c` 可能不会像人们期望的那样表现。它不会在每一行前面加上数字(如“less -N”),它只会使屏幕底部的状态框永久存在。 (13认同)
  • 我同意@IanDunn,这是错误的答案。改为添加`set linenumbers`(仅适用于最新版本)。 (6认同)

小智 91

偶然发现了不错的快捷方式:Alt+ #,在某些键盘布局中可以使用Alt+ Shift+来完成3

轻轻地点击我

  • 将 `set linenumbers` 添加到 `.nanorc` 以使其永久化。如果快捷方式不起作用,请尝试`Modifier key + #`。 (18认同)
  • @DirkSchumacher `esc + n` 和 `esc + shift + #` 在 macOS 上工作。 (6认同)
  • 在带有 GNU nano 2.5.3 的 ubuntu16.04 上对我不起作用 (3认同)
  • 无法在 ssh'd ubuntu 终端上使用 mac 键盘 (2认同)

top*_*217 64

根据 GNU nano 2.9.3 的手册页(也在 4.8 版上进行了验证),您有两个选项可以自动打开并显示行号,另一个选项用于在 nano 打开后打开/关闭它们:

命令行标志

您可以使用-l--linenumbers标志。

       -l- -l inenumbers
              在文本区域的左侧显示行号。

例如
nano -l foo.txt
nano --linenumbers foo.txt

通过配置文件

或者,根据 nanorc 的手册页,您可以添加set linenumbersin ~/.nanorc,$XDG_CONFIG_HOME/nano/nanorc~/.config/nano/nanorc.

初始化 文件
       nano将读取两个配置文件:首先是系统的 nanorc(如果
       它存在),然后是用户的 nanorc(如果存在),~/.nanorc
       或 $XDG_CONFIG_HOME /nano/nanorc~/ .nanorc 配置/nano/nanorc,以哪个为准
       第一次遇到。有关可能的更多信息,请参阅nanorc (5)
       这些文件的内容。
        linenumbers
          在文本区域的左侧显示行号。

所以我的 ~/.nanorc 文件的内容很简单:

1个linenumbers
 2

通过键绑定

不完全是 OP 所要求的,但为了完整起见,您还可以通过Alt+N.

或者,您可以通过 man 文件中提到的方法重新绑定此密钥:

重新绑定 KEYS
       可以通过以下三个命令更改键绑定:

          绑定键功能菜单
                 重新绑定在给定的菜单的给定键给定的功能(或在当存在功能的所有菜单的所有被使用)。
密钥的格式应该是以下之一:

          ^ X 其中 X 是拉丁字母,或几个 ASCII 字符之一(@、]、\、^、_),或单词“Space”。示例:^C。

          M- X 其中 X 是除 [ 或单词“Space”之外的任何 ASCII 字符。示例:M-8。

          Sh-M- X 其中 X 是拉丁字母。示例:Sh-MU。默认情况下,每个 Meta+letter 按键的作用与相应的 Shift+Meta+letter 相同。但是当进行任何 Shift+Meta 绑定时,这将
                 不再是这种情况,对于所有字母。

          F N 其中 N 是从 1 到 24 的数值。示例:F10。(通常,F13F24可以通过Shift键入为F1F12。)

          插入删除。

       重新绑定^M (Enter) 或^I (Tab) 可能不是一个好主意。在某些终端上,无法重新绑定^H(除非使用--raw),因为它的键码与 Backspace 键的键码相同。

       要绑定的有效函数名称是:

...


            切换文本前行号的显示。

关于备用配置文件:

为了回应关于备用配置文件的评论,来自以下描述man nanorc

在启动过程中,nano  将首先
       从/ etc /nanorc读取系统范围的设置(确切路径可能与您的
       system),然后是用户特定的设置,来自  ~/.nanorc  或来自 $XDG_CON?
       FIG_HOME /nano/nanorc或来自~/.config/nano/nanorc,以先遇到者为准。

我通常不会建议其他人更改系统范围的配置文件,除非您有充分的理由这样做,因为它可能会在任何更新期间被覆盖,并且不太可能包含在系统备份中,通常只包括主目录。

与 sudo 一起使用

正如评论者所指出的,如果您必须将 sudo 与 nano 一起使用,这可能无法按预期工作,例如sudo nano myFile. 这是因为当您使用 sudo 时,您正在sudo以“超级用户”的身份做任何事情,因此名称(超级用户做..)。如果您编辑了非超级用户配置文件(例如~/.nanorc/home/myUserName/.nanorc),则在使用 sudo 时将不会运行该文件,因为您myUserName不再像以前那样运行 nano 。因此,您有几个选择。

  1. 最简单的就是使用-l标志,它会按原样工作。
  2. 将您的内容复制~/.nanorc到,/root/.nanorc因为这代表超级用户的主目录。假设您根据需要./nanorc设置了文件,并且您还没有/root/.nanorc文件,那么您可以运行sudo cp /home/myUserName/.nanorc /root/. 请注意,这将覆盖任何现有的 nanorc 文件/root,您必须将 myUserName 替换为您的实际用户名。我没有测试,但我猜你不能使用波浪号运算符,即 ``sudo cp ~/.nanorc /root/ as it would likely interperet this to be/root` 而不是你的用户名,你告诉它“超级用户从主目录执行 cp”。


0x7*_*77C 27

从源代码编译 Nano:

git clone git://git.savannah.gnu.org/nano.git;cd nano;./autogen.sh;./configure;sudo make install 
Run Code Online (Sandbox Code Playgroud)

然后将以下内容添加到您的.nanorc文件中:

set linenumbers
Run Code Online (Sandbox Code Playgroud)

您可以使用Meta+#在 Nano 中打开和关闭行号。

  • 就我而言,设置 linenumbers 就足够了,无需从源代码重新编译 nano (3认同)
  • 就 Ubuntu 而言,过去和现在可能仍然是正确的 (2认同)

小智 13

如果nano -c filename不起作用,请使用nano filenamethen Ctrl+ _。它会询问您要转到的行号。


Sea*_*mus 8

现在是 2021 年。OP 的问题仍然有效,但这里的许多答案都是针对旧版本的nano. 我并不是将这个答案作为“最后一句话”来呈现——只是作为更新。

Nano的默认屏幕由五个区域组成。从上到下分别是:标题栏、空白行、编辑窗口、状态栏和两个帮助行。

在哪里显示行号?

行号可以显示在两个位置之一:

  1. 编辑窗口
  2. 状态栏

当光标/插入点在编辑窗口中移动时,状态栏显示只是更新光标/插入点的行号(和列)。编辑窗口中的行号位于左边距。可以在编辑窗口和状态栏中之一或两者中显示行号。

在编辑窗口中显示行号:

有几种方法(这不一定是完整列表):

  1. 在文件打开之前:

    ~/.nanorc使用以下行编辑/创建文件:

    set linenumbers
    
    Run Code Online (Sandbox Code Playgroud)
  2. 当文件打开时:

    使用-l以下选项nano

    $ nano -l <myfilename>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 文件打开后:

    使用以下命令切换行号“开”和“关” alt-shift-#

    altshift#

在状态栏中显示行号

  1. 在文件打开之前:

    ~/.nanorc使用以下行编辑/创建文件:

    set constantshow
    
    Run Code Online (Sandbox Code Playgroud)
  2. 当文件打开时:

    使用-c以下选项nano

    $ nano -c <myfilename>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 文件打开后:

    使用以下命令在状态栏中“打开”和“关闭”切换行号显示alt-shift-C

    altshiftC

概括

这些都从今天开始工作:Ubuntu 20.04, = GNU nano,版本 4.8,尽管文档nano --version中存在细微差异。


小智 5

如果您已经用 nano 打开了文件,请按

Ctrl+w+t
Run Code Online (Sandbox Code Playgroud)

(不要同时按下 control 和 w,然后不放掉 control 放掉 w,按 t)

此命令将需要列和行,您可以通过以下方式输入它们:

10,23 (enter)
Run Code Online (Sandbox Code Playgroud)

你将在第 10 行字符 23 处结束。

如果您位于文件顶部并且只想找到以下行:

Ctrl+w+t and then 10
Run Code Online (Sandbox Code Playgroud)

如果您在某条线路上并且想要查找该列:

Ctrl+w+t and then ,23
Run Code Online (Sandbox Code Playgroud)

如果你还没有打开文件,你可以这样做:

nano +10,23 file (enter)
Run Code Online (Sandbox Code Playgroud)

并且文件将在第 10 行的 chanracter 23 中使用光标打开,因此您也可以尝试:

nano +10 file (enter)
Run Code Online (Sandbox Code Playgroud)

nano +,23 file (enter) (请注意,这只会将您发送到第一行的字符 23)