nano - Nano 的另一个文本编辑器,灵感来自 Pico
概要
nano [选项] [[+行[,列]] 文件]...
nano [选项] [[+[crCR]{/|?}字符串] 文件]...
注意
自 8.0 版本以来,为了便于新手使用,^F 启动向前搜索,^B 启动向后搜索,M-F 搜索下一个正向出现的位置,M-B 搜索下一个反向出现的位置。 如果您希望这些按键执行版本 8.0 之前的操作,请将以下行添加到您的 nanorc 文件的末尾:
bind ^F forward main
bind ^B back main
bind M-F formatter main
bind M-B linter main
描述
nano 是一款小型且友好的文本编辑器。它模仿了 Pico 的外观和感觉,但它是免费软件,并实现了一些 Pico 缺乏的功能,例如:打开多个文件、逐行滚动、撤销/重做、语法高亮显示、行号和软换行超长行。
在命令行中给出一个文件名时,可以通过在文件名之前添加加号 (+) 和行号来将光标放在特定的行上,甚至可以通过添加逗号来放在特定的列上。负数从文件或行的末尾开始计数。
光标可以放在特定字符串的第一个或最后一个出现的位置,方法是在文件名之前指定该字符串,并在 +/ 或 +? 之后。可以通过插入 c 和/或 r 来使字符串区分大小写和/或将其解释为正则表达式。可以通过使用大写形式的字母(C 和/或 R)来显式禁用这些搜索模式。当字符串包含空格时,需要用引号将其括起来。例如,要打开一个文件中“Foo”一词的第一个出现的位置的文件,您可以执行以下操作:
nano +c/Foo 文件
作为一种特殊情况:如果给出的不是文件名而是一个破折号 (-),nano 将从标准输入读取数据。
编辑
输入文本和在文件中移动光标是直接的:键入字母并使用正常的光标移动键。命令是通过使用 Control (^) 和 Alt 或 Meta (M-) 键输入的。键入 ^K 会删除当前行并将其放入剪贴缓冲区。连续的 ^K 会将所有删除的行一起放入剪贴缓冲区。任何光标移动或执行任何其他命令都会导致下一个 ^K 覆盖剪贴缓冲区。^U 粘贴当前剪贴缓冲区的内容到当前光标位置。
当需要剪切或复制更精确的文本片段时,可以使用 ^6 标记其开头,将光标移动到其末尾(标记的文本将被突出显示),然后使用 ^K 进行剪切,或使用 M-6 复制到剪贴缓冲区。您还可以使用 ^O 将标记的文本保存到文件,或使用 ^T^T 进行拼写检查。
在某些终端上,也可以通过按住 Shift 键并使用箭头键来选择文本。 按住 Ctrl 或 Alt 键也可以增加步长。如果没有按住 Shift 键进行光标移动,则会取消这种选择。
可以通过键入 M-V,后跟 Unicode 代码点的十六进制数字(用空格或回车键结束,如果数字少于六位)来将任何有效的 Unicode 代码点插入到缓冲区中。可以通过键入 M-V,后跟相应的按键来插入文字控制代码(不包括 ^J)。
屏幕底部的两行显示了一些重要的命令;内置帮助(^G)列出了所有可用的命令。默认按键绑定可以通过 nanorc 文件进行更改——请参阅 nanorc(5)。
选项
-A, --smarthome
使 Home 键更智能。当 Home 键在非行首的非空白字符处按下时,光标会跳到该行首(向前或向后)。如果光标已位于该位置,则它会跳到该行的真实开头。
-B, --backup
保存文件时,备份其先前版本,使用当前文件名并附加一个波浪号(~)。
-C 目录, --backupdir=目录
不仅创建一个备份文件,而且每次保存文件时都创建一个唯一的编号的备份文件——当启用备份时(-B)。这些唯一的编号的文件存储在指定的目录中。
-D, --boldtext
对于界面,使用粗体而不是反显。可以通过在 nanorc 文件中设置 titlecolor、statuscolor、promptcolor、minicolor、keycolor、numbercolor 和/或 selectedcolor 选项来为特定元素覆盖此设置。请参阅 nanorc(5)。
-E, --tabstospaces
将每个键入的制表符转换为空格——转换为在该位置制表符所占用的空格数。(注意:粘贴的制表符不会被转换。)
-F, --multibuffer
默认情况下,将文件读取到新的缓冲区中。
-G, --locking
在编辑文件时,使用 vim 样式的文件锁定。
-H, --historylog
保存最近的 100 个搜索字符串、替换字符串和执行的命令,以便在以后的会话中轻松重用。
-I, --ignorercfiles
不要读取系统的 nanorc 文件或用户的 nanorc 文件。
-J 数字, --guidestripe=数字
在给定的列绘制一条垂直线,以帮助判断文本的宽度。(线条的颜色可以使用 set stripecolor 在 nanorc 文件中更改。)
-K, --rawsequences
直接解释转义序列,而不是让 ncurses 翻译它们。(如果需要此选项才能使某些按键正常工作,则表示用于 ncurses 的终端描述文件与终端的实际行为不完全匹配。当通过 ssh 访问 BSD 机器时,可能会发生这种情况。)使用此选项会禁用 nano 的鼠标支持。
-L, --nonewlines
如果文本不以换行符结尾,则不要自动添加换行符。(这可能会导致保存非 POSIX 格式的文本文件。)
-M, --trimblanks
在自动换行或文本对齐时,删除已换行行的末尾空格。
-N, --noconvert
禁用自动将文件从 DOS/Mac 格式转换为其他格式。
-O, --bookstyle
在进行对齐时,将以空格开头的任何行视为段落的开头(除非已启用自动缩进)。
-P, --positionlog
对于最近的 200 个文件,记录光标的最后位置,并在重新打开这些文件时将光标置于该位置。同时保存并恢复任何锚点的位置。
-Q "regex", --quotestr="regex"
设置用于匹配行中引用部分的正则表达式。默认值为 "^([ \t]*([!#%:;>|}]|//))+"。(请注意,\t 代表一个制表符。)这使得在编写电子邮件时可以重新对齐引用的文本块,并在编写源代码时重新换行注释块。
-R, --restricted
受限模式:不读取或写入命令行中未指定的文件。这意味着:不读取或写入历史文件;不允许暂停;不允许进行拼写检查;不允许将文件附加、前置或保存到不同的名称(如果它已经有一个名称);并且不创建备份文件。受限模式也可以通过使用以“r”开头的任何名称来调用 nano(例如,“rnano”)。
-S, --softwrap
在多个屏幕行中显示超过屏幕宽度的行。(可以通过同时使用 --atblanks,使软换行在空格处发生,而不是在屏幕边缘粗暴地换行。)
-T number, --tabsize=number
将制表符的宽度设置为 number 列。number 的值必须大于 0。默认值为 8。
-U, --quickblank
使状态栏消息在按下一个键后消失,而不是在按 20 个键后消失。请注意,选项 -c (--constantshow) 会覆盖此选项。当选项 --minibar 或 --zero 生效时,--quickblank 会使消息在 0.8 秒后消失,而不是在默认的 1.5 秒后消失。
-V, --version
显示当前版本号并退出。
-W, --wordbounds
通过将标点符号视为单词的一部分来更改检测单词边界的方式。
-X "characters", --wordchars="characters"
指定应将哪些其他字符(除了通常的字母数字字符)视为单词的一部分。在使用此选项时,可能需要省略 -W (--wordbounds)。
-Y name, --syntax=name
指定要在 nanorc 文件中定义的语法中使用的语法名称。
-Z, --zap
让未修改的 Backspace 或 Delete 键擦除标记的区域(而不是单个字符,并且不影响剪贴缓冲区)。
-a, --atblanks
在进行软换行时,在空格处换行,而不是始终在屏幕边缘换行。
-b, --breaklonglines
自动对过长的行进行硬性换行。 (此选项与 -w (--nowrap) 选项相反——最后给定的选项生效。)
-c, --constantshow
不断在状态栏上显示光标位置。 请注意,这会覆盖选项 -U (--quickblank)。
-d, --rebinddelete
以不同的方式解释 Delete 和 Backspace 键,以便 Backspace 和 Delete 键都能正常工作。 您应该只在使用系统中的 Backspace 键表现得像 Delete 键,或者 Delete 键表现得像 Backspace 键时,才使用此选项。
-e, --emptyline
不使用标题栏下方的行,使其完全为空。
-f file, --rcfile=file
只读取此文件来设置 nano 的选项,而不是同时读取系统范围内的 nanorc 文件和用户的 nanorc 文件。
-g, --showcursor
在文件浏览器(将光标放在高亮显示的条目上)和帮助查看器中显示光标。 对于盲人用户和视力较差的人来说,这很有用。
-h, --help
显示可用的命令行选项摘要,然后退出。
-i, --autoindent
自动将新创建的行缩进到与前一行(或者如果前一行是段落的开头,则与下一行)相同的制表符和/或空格数。
-j, --jumpyscrolling
按半屏幕为单位滚动缓冲区内容,而不是按行滚动。
-k, --cutfromcursor
使“剪切文本”命令(通常是 ^K)从当前光标位置剪切到行尾,而不是剪切整行。
-l, --linenumbers
在文本区域的左侧显示行号。 (任何带有锚点的行都会在边距中显示一个标记。)
-m, --mouse
如果您的系统支持,则启用鼠标支持。 启用后,可以使用鼠标单击来放置光标、设置标记(双击)并执行快捷方式。 鼠标可以在 X Window System 中使用,并且在 gpm 运行时可以在控制台上使用。 仍然可以通过按住 Shift 键拖动来选择文本。
-n, --noread
将命令行中给定的任何名称都视为新文件。 这允许 nano 写入命名管道:它从一个空白缓冲区开始,并在用户保存“文件”时写入管道。 这样,nano 可以用作与 gpg 等的组合编辑器,而无需首先将敏感数据写入磁盘。
-o directory, --operatingdir=directory
切换到给定的目录,并且只允许读取和写入该目录及其子目录中的文件。
-p, --preserve
保留 XOFF 和 XON 序列 (^S 和 ^Q),以便终端可以捕获它们(停止和恢复输出)。 请注意,选项 -/ (--modernbindings) 会覆盖此选项。
-q, --indicator
在编辑窗口的右侧显示“滚动条”。 它显示视口在缓冲区中的位置以及视口覆盖的缓冲区大小。
-r number, --fill=number
设置用于进行对齐和自动硬性换行的目标宽度(以列数为单位)。 如果值为 0 或更小,则换行将在屏幕宽度减去指定列数的位置进行,从而允许换行点随着屏幕大小的变化而变化。 默认值为 -8。
-s "program [argument ...]", --speller="program [argument ...]"
使用此命令执行拼写检查和更正,而不是使用内置的拼写检查器,该拼写检查器会调用 hunspell(1) 或 spell(1)。
-t, --saveonexit
在退出时(使用 ^X),保存已更改的缓冲区,无需提示。
-u, --unix
默认以 Unix 格式保存文件。这将覆盖 nano 默认的行为,即以文件原本的格式保存文件。(如果同时使用 --noconvert,则此选项无效。)
-v, --view
仅查看文件并禁止编辑:只读模式。此模式允许用户打开其他文件进行查看,除非同时指定了 --restricted。
-w, --nowrap
当当前行变得过长时,不要自动进行硬换行。这是默认设置。(此选项与 -b (--breaklonglines) 相反——最后指定的选项生效。)
-x, --nohelp
不显示屏幕底部的两个帮助行。
-y, --afterends
使 Ctrl+Right 和 Ctrl+Delete 在单词结尾而不是单词开头停止。
-z, --listsyntaxes
列出可用的语法名称并退出。
-!, --magic
当文件名或文件的第一行都无法提供线索时,尝试使用 libmagic 来确定适用的语法。
-@, --colonparsing
当命令行中给定的文件名以冒号加数字结尾,并且该文件名不存在时,则删除冒号加数字,并将数字解释为行号。如果删除冒号和数字后的文件名也不存在,则重复该过程,并将获得的两个数字解释为行号和列号。但是,如果再次删除冒号和数字后的文件名也不存在,则忽略删除操作,并接受原始文件名。要为某些文件禁用这种冒号解析,请在相关文件名之前使用 +1 或类似选项。
-%, --stateflags
在屏幕的右上角显示一些状态标志:I 表示自动缩进,M 表示已启用标记,L 表示进行硬换行(断行),R 表示正在录制宏,S 表示进行软换行。如果缓冲区已修改,则在标题栏中心的文件名后显示一个星号 (*)。
-_, --minibar
禁止显示标题栏,而是在屏幕底部的状态栏空间中显示有关当前缓冲区的的信息。在此“迷你栏”中,文件名显示在左侧,后跟一个星号(如果缓冲区已修改)。在右侧显示当前行和列号、光标下的字符的代码(以 Unicode 格式显示:U+xxxx)、与 --stateflags 相同的标志,以及一个百分比,表示光标在文件中进行了多远(按行)。加载或保存文件以及在缓冲区之间切换时,缓冲区中的行数将显示在文件名之后。在下一次按键后,该数字将被清除,或者在打开多个缓冲区时,该数字将被替换为 [i/n] 计数器。行号和列号以及字符代码仅在使用了 --constantshow 时才会显示,并且可以通过 M-C 进行切换。状态标志仅在使用了 --stateflags 时才会显示。
-0, --zero
隐藏所有界面元素(标题栏、状态栏和帮助行),并使用终端的所有行来显示缓冲区的内容。状态栏仅在有重要消息时出现,并在 1.5 秒后或在按下下一个按键时消失。使用 M-Z 可以切换标题栏和状态栏。使用 M-X 可以切换帮助行。
-/, --modernbindings
使用类似于大多数现代程序使用的按键绑定:^X 剪切,^C 复制,^V 粘贴,^Z 撤销,^Y 重做,^F 向前搜索,^G 搜索下一个,^S 保存,^O 打开文件,^Q 退出,并且(当终端允许时)^H 显示帮助。此外,^A 设置标记,^R 进行替换,^D 搜索上一个,^P 显示位置,^T 跳转到某一行,^W 写入文件,^E 执行命令。请注意,这会覆盖选项 -p (--preserve)。
切换
上述选项中的几个也可以在 nano 运行时进行开启或关闭。例如,M-L 切换长行的硬换行,M-S 切换软换行,M-N 切换行号,M-M 切换鼠标,M-I 切换自动缩进,M-X 切换帮助行。请参阅 ^G 帮助文本末尾的完整列表。
M-X 切换是特殊的:它适用于所有菜单,但帮助查看器和代码检查器除外。所有其他切换仅在主菜单中有效。
文件
如果给出了 --rcfile,nano 将仅读取指定的文件以设置其选项和语法以及按键绑定。如果没有该选项,nano 将读取两个配置文件:首先是系统的 nanorc(如果存在),然后是用户的 nanorc(如果存在),即 ~/.nanorc 或 $XDG_CONFIG_HOME/nano/nanorc 或 ~/.config/nano/nanorc,以首先遇到的文件为准。请参阅 nanorc(5) 以获取有关这些文件可能包含的内容的更多信息。
请参阅 /usr/share/nano/ 和 /usr/share/nano/extra/ 以获取可用的语法高亮定义。
备注
默认情况下启用挂起,可以通过 ^T^Z 访问。(如果您希望使用纯粹的 ^Z 来挂起 nano,请将 bind ^Z suspend main 添加到您的 nanorc 中。)
在“是/否”提示符处,可以使用 ^Y 表示“是”,^N 表示“否”,^A 表示“全部”。这些未列出的绑定可以在任何语言环境中使用。
当您希望将 nano 中的标记文本复制到系统的剪贴板时,请参阅 nanorc(5) 手册页中的示例之一。
如果命令行中或 nanorc 文件中未指定替代拼写检查器命令,nano 将检查 SPELL 环境变量。
在某些情况下,nano 会尝试将缓冲区转储到紧急文件中。这主要发生在 nano 接收到 SIGHUP 或 SIGTERM 信号,或者内存不足时。它会将缓冲区写入名为 nano.save 的文件中(如果缓冲区之前没有文件名),或者将“.save”后缀添加到当前文件名中。如果当前目录中已存在具有该名称的紧急文件,它会向当前文件名添加“.save”加上一个数字(例如“.save.1”),以使其唯一。在多缓冲区模式下,nano 会将所有打开的缓冲区写入到各自的紧急文件中。
如果您对如何在特定情况下使用 nano 有任何疑问,可以在 [此处] 提问。
错误
键盘宏的记录和回放仅在终端模拟器中有效,而不是在 Linux 控制台 (VT) 中,因为后者默认情况下无法区分已修改和未修改的箭头键。
请通过以下方式报告您遇到的任何其他错误: [https://savannah.gnu.org/bugs/?group=nano]。
当 nano 崩溃时,它会将任何已修改的缓冲区保存到紧急“.save”文件中。如果您能够重现崩溃并想要获取回溯,请定义环境变量 NANO_NOCATCH。
主页
[https://nano-editor.org/]
参见
nanorc(5)
/usr/share/doc/nano/(或您的系统中的等效目录)