如何在系统范围内覆盖 /etc/nanorc?

如何在系统范围内覆盖 /etc/nanorc?

我希望所有 Nano 用户都拥有tabsize 4而不是默认的 8。实现此目标的最佳方法是什么?我更喜欢在系统级别覆盖 /etc/nanorc 的文件,这样我就不必为此目的维护单独的用户 nanorc。在简单的情况下,我的覆盖只需要包含:

set tabsize 4

这是陈述我的问题的另一种方式:nano 是否识别 /etc/nanorc.d/ 和其中放置的配置文件?如果是这样,放置在那里的配置文件所需的命名和/内容是什么?

到目前为止,我尝试的是创建/etc/nanorc.d/一个名为 tabsize.conf 的文件并将其放置在该目录中,并仅在该文件中放置以下内容:

set tabsize 4

我天真的尝试没有成功,但我希望有一种方法可以将这个 config.d/ 模式与 nano 一起使用。

我会让我的问题更加具体。我正在使用 Arch Linux。当软件包有新的 nanorc 时,我必须执行以下步骤:

mv /etc/nanorc.pacnew /etc/nanorc

然后编辑/etc/nanorc,搜索 tabsize,取消注释该行,将值从 8 更改为 4 并保存文件。

我的目标是只需要执行这一步:

mv /etc/nanorc.pacnew /etc/nanorc

并拥有一个与/etc/nanorc.d/tabsize.conf包含我所需的选项卡大小类似的文件。虽然节省的时间虽小,但在多台计算机上节省的时间却会成倍增加。今年我好像收到了/etc/nanorc.pacnew大约六次新文件。一遍又一遍地编辑 tabsize 是非常低效的。

答案1

那么/etc/nanorc.pacnew新发行版附带的新rc文件是升级版吗?怎么样

sed '/tabsize/ {s/^# *//; s/[0-9]*$/4/}' /etc/nanorc.pacnew > /etc/nanorc 

, 然后?

另一个可能的技巧可能是~/.nanorc在每个用户的主目录中都有一个符号链接,指向带有相关命令的中央文件。

一经请求:

sed '/tabsize/              # if the line matches "tabsize"
{s/^# *//;                  # remove "#" and trailing spaces from begin-of-line (BOL)
s/[0-9]*$/4/                # substitute any sequence of digits at EOL by "4"
}' /etc/nanorc.pacnew       # input file
> /etc/nanorc               # redirection to target file

答案2

要添加到 RudiC 的答案中,链接技巧有效!这对于全局覆盖很有用,您不需要do-release-upgrade在 Ubuntu 上的 a 之后修复(这可能会更新文件/etc/nanorc)。

这就是我所做的。
假设共享的 nanorc 覆盖文件位于/home-shared/.config/nano/nanorc
然后只需为每个用户链接它 ( su $USER):

mkdir -p ~/.config/nano &&
ln -s /home-shared/.config/nano/nanorc ~/.config/nano/nanorc

您也可以对 root 用户执行相同的操作,因此在使用时也适用sudo nano ...

sudo mkdir -p /root/.config/nano &&
sudo ln -s /home-shared/.config/nano/nanorc /root/.config/nano/nanorc

在这种情况下,最好确保链接文件只能由 root 写入:

sudo chown root:root /home-shared/.config/nano/nanorc &&
sudo chmod 644 /home-shared/.config/nano/nanorc # 0644/-rw-r--r--

我喜欢的 nanorc 文件示例,使其更像 GUI 编辑器:

## Forget the used search/replace strings on the next session.
unset historylog
## Display line numbers to the left (and any anchors in the margin).
set linenumbers
## Disable vim-style lock-files.
unset locking
## Make the Home key smarter, toggling line-start / first non-whitespace position
set smarthome
## Spread overlong lines over multiple screen lines.
set softwrap
## Disallow nano to be suspended (with ^Z by default).
unset suspendable
## Use this tab size instead of the default; it must be greater than 0.
set tabsize 2
## Make nano have keybindings that are more "usual"
bind ^Q exit all
bind ^S savefile main
bind ^W writeout main
bind ^O insert main
bind ^H help all
bind ^H exit help
bind ^F whereis all
bind ^G findnext all
bind ^R replace main
bind ^X cut all
bind ^C copy main
bind ^V paste all
bind ^A mark main
bind ^Z undo main
bind ^Y redo main

答案3

纳米文档对于 Nano 6.4 来说,这样nano --rcfile=/pathtonanorcfile就不会加载其他 nanorc 文件。

“在启动过程中,如果未给出 --rcfile,nano 将读取两个文件:首先是系统范围的设置,来自 /etc/nanorc(系统上的确切路径可能有所不同),然后是用户特定的设置,来自 ~/.nanorc 或来自 $XDG_CONFIG_HOME/nano/nanorc 或来自 ~/.config/nano/nanorc,以先遇到的为准。如果给出了 −−rcfile,nano 将只读取指定的设置文件。

要完全禁用 nanorc 文件读取,请执行nano -I.

相关内容