Linux 终端的文本编辑器中,较著名的有:Nano、Vim、Emacs。其它文本编辑器还有 Gedit、Sublime,Atom 等等。
1、Nano
1.1、基础命令
-
nano:打开 nano 编辑器。 -
nano [文件]:打开文件,文件不存在则创建。 -
常用参数
-
nano -m [文件]:激活鼠标。 -
nano -i [文件]:激活自动缩进。 -
nano -A [文件]:激活智能 Home 键,根据行首处有无缩进来跳转。 -
nano -miA [文件]:三者组合。
-
1.2、快捷操作
-
EXC X:显示\隐藏帮助文档。 -
Ctrl G:帮助文档。 -
Ctrl X:退出。 -
Ctrl O:保存。 -
Ctrl J:对其当前段落。 -
Ctrl R:读取文件。 -
Ctrl W:查找。 -
Ctrl Y:上一页。 -
Ctrl V:下一页。 -
Ctrl K:剪切当前行。 -
Ctrl U:粘贴 。 -
Ctrl C:光标位置。 -
Ctrl T:拼写检查。 -
Ctrl \:替换。
1.3、配置文件
Linux 中的配置文件大多以点开头,以 ”rc“ 结尾。许多程序启动时,都需要“rc”(run command)后缀的初始文件或配置文件。
Nano 有一个.nanorc配置文件,用于设置 Nano 的一些选项,每个用户都可以在自己家目录/home/用户名/创建 .nanorc 配置文件。
如果家目录没有.nanorc,则 nano 会使用全局的配置文件。
- 个人 Nano 配置,
cd /home/用户名,nano .nanorc
# 激活鼠标
set mouse
# 激活自动缩进
set autoindent
# 激活智能Home键
set smarthome
- 全局 Nano 配置,
sudo nano /etc/nanorc,该配置文件中有 Nano 的所有配置,只需将 set 配置语句前 # 号去掉,即可激活对应配置。
2、Vim
Vi iMproved,Vi 文本编辑器的进阶版。
2.1、四大模式
- 交互模式:Interactive Mode, Vim 默认模式,执行剪切、粘贴、撤销等操作。
- 插入模式:Insert Mode,按
i、a、o (I、A、O)键进入,执行输入文本操作。 - 命令模式:Command Mode,也称为底行命令模式,执行保存、退出、配置等操作。
- 可视模式:Visual Mode,高亮选取文本后的交互模式。
2.2、基础命令
-
vim:打开 Vim 编辑器。 -
vim [文件]:打开文件,文件不存在则创建。 -
交互模式
-
ESC:进入交互模式。 -
h | ↑:向左移动一个字符。 -
j | ↓:向下移动一个字符。 -
k | ←:向上移动一个字符。 -
l | →:向右移动一个字符。 -
0 (零):光标移至当前行行首。 -
$ | End:光标移至当前行行尾。 -
w:一个单词一个单词的移动。
-
-
插入模式(先按 Esc 键进入交互模式)
-
i:在光标前插入。 -
I:在光标当前行首插入。 -
a:在光标后插入。 -
A:在光标当前行尾插入。 -
o:在光标下插入一行。 -
O:在光标上插入一行。 -
s:删除光标所在字符并在光标前插入。 -
S:删除光标所在行并插入。
-
-
命令模式(先按 Esc 键进入交互模式)
-
::进入命令模式。 -
:w [文件名]:保存。 -
:wq | :x [文件名]:保存并退出。 -
:q:退出。 -
:q!:不保存退出。 - 选项参数
-
:set nu:显示行号。 -
:set nonu:隐藏行号。
-
-
-
可视模式(先按 Esc 键进入交互模式)
-
v:字符可视模式。 -
V:行可视模式。 -
Ctrl v:块可视模式。 - 以上相当于批量选中字符,配合删除复制修改等操作。
-
u:选中字符转小写。 -
U:选中字符转大写。
-
2.3、标准操作
在交互模式下操作。
-
删除
-
x:删除光标处字符。 -
数字x:删除从光标处字符开始,往后N个数字的字符。 -
dd:删除光标所在行 (剪切)。 -
数字dd:删除从光标所在行,往后N行字符。 -
dw:光标移至单词首字母删除单词,若光标在单词中间则删除光标处及后面所有字符。 -
数字dw:删除从光标处单词开始,往后N个数字的单词。 -
d0:删除从光标处到行首的所有字符。 -
d$:删除从光标处到行末的所有字符。
-
-
复制
-
yy:复制光标所在行。 -
yw:复制一个单词。 -
y0:复制从光标所在处到行首的所有字符。 -
y$:复制从光标所在处到行末的所有字符。
-
-
粘贴
-
p:粘贴到光标后面。 -
数字p:粘贴数字次。
-
-
替换
-
r新字符:替换光标处字符。 -
R:替换模式,替换光标处开始任意个字符,ESC 键退出替换模式。
-
-
撤销
-
u:撤销。 -
数字u:撤销数字次。 -
Ctrl r:取消撤销、返回。
-
-
跳转
-
数字G | 数字gg:跳转指定行。 -
gg:跳转首行。 -
G:跳转底行。
-
2.4、高级操作
在交互模式下操作。
-
查找
-
/:从当前光标处开始,向文件尾搜索;输入查找的字符串,回车,光标跳至匹配处;n 下一个匹配,N 上一个匹配。 -
?:从当前光标处开始,向文件头搜索;其它与 / 一样。
-
-
替换
-
:s/旧字符串/新字符串:替换光标所在行第一个匹配的字符串。 -
:s/旧字符串/新字符串/g:替换光标所在行所有匹配的字符串。 -
:#,# s/旧字符串/新字符串/g:替换第#行至第#行所有匹配的字符串。 -
:%s/旧字符串/新字符串/g:替换所有匹配的字符串。
-
-
合并
-
:r 文件名:光标处插入一个文件的内容。
-
-
分屏
-
:sp [文件名]:横向分屏。 -
:vsp [文件名]:垂直分屏。 -
Ctrl w w:切换分屏,同一行默认从上往下,从左往右。 -
Ctrl w 方向键:按指定方向切换分屏。 -
Ctrl w +:扩大当前分屏。 -
Ctrl w =:均匀分配所有分屏比例。 -
Ctrl r:调换分屏位置。 -
Ctrl R:反向调换分屏位置。 -
Ctrl w q|c:关闭当前分屏。 -
:quit | :close:关闭当前分屏。 -
Ctrl w o:保留当前分屏,关闭其它分屏。 -
:only:保留当前分屏,关闭其它分屏。
-
-
其它
-
:!命令:运行 Vim 外部命令 (终端命令),按回车或输入命令来继续。
-
2.5、配置文件
-
配置方式
- 激活或不激活选项参数,文档:http://vimdoc.sourceforge.net/htmldoc
- 安装插件,官网:https://www.vim.org/scripts/index.php
-
短暂配置
打开 Vim 后,在命令模式下激活选项参数,这些激活都是一次性的,再次打开 Vim 就没有了。
-
:set 选项名:激活配置 -
:set 选项名=数值:激活配置 -
:set no选项名:取消配置
-
-
永久配置
修改了配置文件后,须保存并退出文件,再重新运行 Vim,使用最新配置。- 全局 Vim 配置,
/etc/vimrc - 个人 Vim配置,
cp /etc/vimrc ~/.vimrc
可能有的选项参数已经存在也已经被激活,前面没有 " (双引号)。
可能有的选项参数已经存在但没有被激活,前面有 " (双引号)。
可能有的选项参数还没存在,添加即可。 - 全局 Vim 配置,
-
常用选项
-
syntax on:(默认) 语法高亮,根据不同的文件类型。 -
set number:显示行号。 -
set showcmd:显示当前命令。 -
set ignorecase:查找时忽略大小写。 -
set mouse=a:激活鼠标,用鼠标选择一段文本则激活可视模式。
vim /home/.vimrcif v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=ucs-bom,utf-8,latin1 endif set nocompatible " Use Vim defaults (much better!) set bs=indent,eol,start " allow backspacing over everything in insert mode "set ai " always set autoindenting on " than 50 lines of registers set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time "自定义配置================================ " = set number "显示行号 = set showcmd "显示当前命令 = set ignorecase "查找时忽略大小写 = set mouse=a "激活鼠标 = " = "========================================== " Only do this part when compiled with support for autocommands if has("autocmd") augroup redhat autocmd! " In text files, always limit the width of text to 78 characters " autocmd BufRead *.txt set tw=78 " When editing a file, always jump to the last cursor position autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal! g'\"" | \ endif " don't write swapfile on most commonly used directories for NFS mounts or USB sticks " start with spec file template autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec augroup END endif if has("cscope") && filereadable("/usr/bin/cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add $PWD/cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb endif " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif filetype plugin on if &term=="xterm" set t_Co=8 set t_Sb=^[[4%dm set t_Sf=^[[3%dm endif " Don't wake up system with blinking cursor: " http://www.linuxpowertop.org/known.php let &guicursor = &guicursor . ",a:blinkon0" -