最(不)受欢迎的终端编辑器 Vi/Vim 和 Nano
我们中有些人经常使用终端,或者对如何用它控制他们的系统感到好奇。使用终端的主要方法之一是配置文本文件终端文本编辑器并控制某些程序或系统服务的行为方式。使用终端可能仍然更好的原因有很多,并且几乎总是至少有一个程序需要文本编辑器来完成任务。两个最佳选择是nano 和vim。
Vim 软件简介
Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。
Vim 无脑傻瓜使用
vim /etc/nanorc
修改 Nano 颜色和快捷键配置vim /etc/nanorc GA # 到文件最后编辑 Enter Shift+Insert # 新起一行,粘贴文章后面的 Nano 颜色和快捷键配置 Esc :wq # 保存配置退出 ggdG # 删除全文: gg到行首,d删除 G删除到末尾 Esc 从编辑模式切换到命令模式 a 在当前字符后添加文本 A 在行末添加文本 i 在当前字符前插入文本 I 在行首插入文本 / 字符串 文本查找操作
Nano 软件简介
nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制品(clone)。nano的目标是类似Pico的全功能但又易于使用的编辑器。nano是遵守GNU通用公共许可证的自由软件,自从2.0.7版发布,许可证从GPLv2升级到GPLv3。
nano编辑器被设计用来模仿华盛顿大学Pico文本编辑器,且具有类似的功能性与易用性。它包括四个主要部分:
顶行显示程序版本、当前被编辑的文件名以及该文件是否已被修改。接着是主要编辑区,显示正在编辑的文件。
状态行位于倒数第三行,用来显示重要的信息。底部的两行显示了编辑器中最常用的快捷键。
快捷键用如下方式进行表示:控制键序列使用一个“^”符号标记,它可以用Ctrl键或按Esc键两次的方式进行输入。
Meta键序列使用“M-”符号标记,它可以用Alt、Cmd或Esc键输入,具体取决于您的键盘设置。另外,按Esc两次之后
再键入从000到255之间的三位数字,则会输入该ASCII码对应的字符。
## Nano 快捷键设置记事本类似 /etc/nanorc
bind ^Q exit all
bind ^S savefile main
bind ^W writeout main
bind ^O insert main
bind ^F whereis all
bind ^G findnext all
bind ^B wherewas all
bind ^D findprevious all
bind ^R replace main
bind ^X cut all
bind ^C copy main
bind ^V paste all
bind ^P location main
bind ^A mark main
bind ^U undo main
bind ^E redo main
## Nano 启用鼠标、行号和设置颜色
set numbercolor yellow,magenta
set keycolor lightyellow,green
set functioncolor white,red
set linenumbers
set mouse
Nano 和 Vim 命令行参数比较
nano -h
用法: nano [选项] [[+行[,列]] 文件名]...
如需启动时将游标置放在文件的特定行上,请在文件名前使用“+”符号加上行号以
进行指定。如需同时指定特定列,可以在其后添加半角逗号和列号。
当文件名为“-”时,nano 从标准输入读取数据。
选项 长选项 意义
-A --smarthome 启用智能 HOME 键
-B --backup 储存既有文件的备份
-C <目录> --backupdir=<目录> 用以储存独一备份文件的目录
-D --boldtext 用粗体替代颜色反转
-E --tabstospaces 将已输入的制表符转换为空白
-F --multibuffer 默认从文件读入到一个新的缓冲区
-G --locking 使用(vim 风格)锁文件
-H --historylog 记录与读取搜索/替换的历史字符串
-I --ignorercfiles 不要参考 nanorc 文件
-J <数字> --guidestripe=<数字> 在此栏显示一个导引条
-K --rawsequences 修正数字键区按键混淆问题
-L --nonewlines 不要自动添加换行符
-M --trimblanks 强制折行时移除末尾空白
-N --noconvert 不要从 DOS/Mac 格式转换
-O --bookstyle 以空白字符起始表示新的段落
-P --positionlog 记录并读取光标位置
-Q <正则表达式> --quotestr=<正则表达式> 匹配引用的正则表达式
-R --restricted 限制对文件系统的访问
-S --softwrap 以多行显示过长的行
-T <数字> --tabsize=<数字> 令制表符宽度为指定行数
-U --quickblank 在下一次按键后清除状态栏内容
-V --version 显示版本信息并离开
-W --wordbounds 更正确地侦测单字边界
-X <字符串> --wordchars=<字符串> 指定哪些其它特殊字符也是单词的一部分
-Y <名称> --syntax=<名称> 用于加亮的语法定义
-Z --zap 让退格键和删除键清除选中的区域
-a --atblanks 软折行时在空白处进行
-b --breaklonglines 对过长的行自动强制换行
-c --constantshow 持续显示游标位置
-d --rebinddelete 修正退格键/删除键混淆问题
-e --emptyline 保持标题栏下面的行一直为空
-f <文件> --rcfile=<文件> 只使用这个文件配置 nano
-g --showcursor 在文件浏览器和帮助文本中显示游标
-h --help 显示本帮助文本并退出
-i --autoindent 自动缩进新行
-j --jumpyscrolling 按半屏幕滚动文本,不按行
-k --cutfromcursor 从游标剪切至行尾
-l --linenumbers 在文本之前显示行号
-m --mouse 启用鼠标功能
-n --noread 不要读取文件(仅写入)
-o <目录> --operatingdir=<目录> 设定操作目录
-p --preserve 保留XON (^Q) 和XOFF (^S) 按键
-q --indicator 显示位置+部分指示器
-r <数字> --fill=<数字> 设置强制换行宽度并进行重排
-s <程序> --speller=<程序> 使用此替代的拼写检查程序
-t --saveonexit 退出时自动保存修改,不要提示
-u --unix 默认将文件保存为 Unix 格式
-v --view 查看(只读)模式
-w --nowrap 不要为过长行强制折行 [默认]
-x --nohelp 不要显示辅助区
-y --afterends 使 Ctrl+Right 在单词末尾处停止
-z --suspendable 启用挂起功能
-% --stateflags 在标题栏显示某些状态
vim -h
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Mar 02 2021 02:58:09)
用法: vim [参数] [文件 ..] 编辑指定的文件
或: vim [参数] - 从标准输入(stdin)读取文本
或: vim [参数] -t tag 编辑 tag 定义处的文件
或: vim [参数] -q [errorfile] 编辑第一个出错处的文件
参数:
-- 在这以后只有文件名
-v Vi 模式 (同 "vi")
-e Ex 模式 (同 "ex")
-E Improved Ex mode
-s 安静(批处理)模式 (只能与 "ex" 一起使用)
-d Diff 模式 (同 "vimdiff")
-y 容易模式 (同 "evim",无模式)
-R 只读模式 (同 "view")
-Z 限制模式 (同 "rvim")
-m 不可修改(写入文件)
-M 文本不可修改
-b 二进制模式
-l Lisp 模式
-C 兼容传统的 Vi: 'compatible'
-N 不完全兼容传统的 Vi: 'nocompatible'
-V[N][fname] Be verbose [level N] [log messages to fname]
-D 调试模式
-n 不使用交换文件,只使用内存
-r 列出交换文件并退出
-r (跟文件名) 恢复崩溃的会话
-L 同 -r
-A 以 Arabic 模式启动
-H 以 Hebrew 模式启动
-T <terminal> 设定终端类型为 <terminal>
--not-a-term Skip warning for input/output not being a terminal
--ttyfail Exit if input or output is not a terminal
-u <vimrc> 使用 <vimrc> 替代任何 .vimrc
--noplugin 不加载 plugin 脚本
-p[N] 打开 N 个标签页 (默认值: 每个文件一个)
-o[N] 打开 N 个窗口 (默认值: 每个文件一个)
-O[N] 同 -o 但垂直分割
+ 启动后跳到文件末尾
+<lnum> 启动后跳到第 <lnum> 行
--cmd <command> 加载任何 vimrc 文件前执行 <command>
-c <command> 加载第一个文件后执行 <command>
-S <session> 加载第一个文件后执行文件 <session>
-s <scriptin> 从文件 <scriptin> 读入正常模式的命令
-w <scriptout> 将所有输入的命令追加到文件 <scriptout>
-W <scriptout> 将所有输入的命令写入到文件 <scriptout>
-x 编辑加密的文件
--startuptime <file> Write startup timing messages to <file>
-i <viminfo> 使用 <viminfo> 取代 .viminfo
--clean 'nocompatible', Vim defaults, no plugins, no viminfo
-h 或 --help 打印帮助(本信息)并退出
--version 打印版本信息并退出