Linux学习-文本编辑器详解

一、Linux系统常用的编辑器

1、Linux几款常见的编辑器

nano编辑器:Ubuntu常用

nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制品(clone)。nano的目标是类似Pico的全功能但又易于使用的编辑器。

nano常用法:

新建/打开文件:nano 路径+文件名

如果改文件存在,上面的命令将打开这个文件;如果文件不存在则将会创建一个新文件并打开。

Note:在Windows系统中,一个文件应当有后缀名,比如.txt,以供系统进行类型判断,不过Linux并不根据 后缀名来判断类型。当然,写上后缀名也无妨,比如example也可以用example.txt。
光标控制
移动光标:使用用方向键移动。

选择文字:按住鼠标左键拖到。
复制、剪贴和粘贴
复制一整行:Alt+6

剪贴一整行:Ctrl+K

粘贴:Ctrl+U

如果需要复制/剪贴多行或者一行中的一部分,先将光标移动到需要复制/剪贴的文本的开头,按Ctrl+6(或者Alt+A)做标记,然后移动光标到 待复制/剪贴的文本末尾。这时选定的文本会反白,用Alt+6来复制,Ctrl+K来剪贴。若在选择文本过程中要取消,只需要再按一次Ctrl+6。

搜索
按Ctrl+W,然后输入你要搜索的关键字,回车确定。这将会定位到第一个匹配的文本,接着可以用Alt+W来定位到下一个匹配的文本。
翻页
用Ctrl+Y到上一页,Ctrl+V到下一页
保存
使用Ctrl+O来保存所做的修改

退出

按Ctrl+X

如果你修改了文件,下面会询问你是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。

如果输入了Y,下一步会让你输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确 定。这个时候也可用Ctrl+C来取消返回。

 

emacs编辑器:emacs是Open Source的领袖Richard Stallman开发的。

是Linux发烧友和程序员的终极武器,其功能大大超过了文本编辑。我们可以在emacs中进行文本编辑,也可以编写程序代码,做程序调试,编辑HTML/SGML,读News,收发e-mail…,而且emacs经过配置后还支持中文。不过功能的强大往往意味着操作方法的复杂,emacs也是如此,必须记非常多的命令才能使用它。

基本操作

文件操作
C-x C-f 打开文件
C-x C-s 保存文件
C-x C-w 存为新文件
C-x C-c 退出Emacs
编辑操作
C-f 前进一个字符
C-b 后退一个字符
M-f 前进一个字
M-b 后退一个字
C-a 移到行首
C-e 移到行尾
M-a 移到句首
M-e 移到句尾
C-p 后退一行
C-n 前进一行
M-x goto-line 跳到指定行
C-v 向下翻页
M-v 向上翻页
M-< 缓冲区头部
M-> 缓冲区尾部
C-l 当前行居中
M-n or C-u n 重复操作随后的命令n次
C-d 删除一个字符
M-d 删除一个字
C-k 删除一行
M-k 删除一句
C-w 删除标记区域
C-y 粘贴删除的内容
注意:C-y可以粘贴连续C-k删除的内容;先按C-y,然后按M-y可以选择粘贴被删除的内容
C-空格 标记开始区域(需修改输入法快捷键)
C-x h 标记所有文字
M-w 复制标记区域
C-/ or C-x u 撤消操作
执行SHELL命令
M-x shell 打开SHELL
M-! 执行SHELL命令 (shell-command)
窗口操作
C-x 0 关闭本窗口
C-x 1 只留下一个窗口
C-x 2 垂直均分窗口
C-x 3 水平均分窗口
C-x o 切换到别的窗口
C-x s 保存所有窗口的缓冲
C-x b 选择当前窗口的缓冲区

C-M v 另外一个窗口向下翻页(需要对照时很好用)

c-M-Shift v 另外一个窗口向上翻页
缓冲区列表操作
C-x C-b 打开缓冲区列表
C-x k 关闭缓冲区
搜索模式
C-s 向前搜索
C-s 查找下一个
ENTER 停止搜索
C-r 反向搜索
C-s C-w 以光标所在位置的字为关键字搜索
M-x replace-string ENTER search-string ENTER 替换
C-M-s 向前正则搜索
C-M-r 向后正则搜索
C-M-% 正则交互替换
帮助
C-h t 入门指南
C-h v 查看变量
C-h f 查看函数
C-h ? 查看帮助列表

vim 、vi编辑器:由加州大学和伯克利大学等机构,以原来的Unix行编辑器ed等为基础开发出来的,是一个使用多年,流传非常广泛的编辑工具。

vim与vi相比,增加了更多的特性,如彩色与高亮显示,可以使我们的编辑工作更轻松。通过设置,vim会自动检测文件中内容的类型,并以不同的颜色进行高亮显示,如注释变成蓝色,关键字变成褐色,而字符串变成红色等,与vi传统的黑白显示模式相比,vim更易读易用。另一个有趣的功能是vim支持从右到左输入字符,这在使用一些特殊语言(如Farsi)进行编程时是比较有用的。在vim中,我们还可以使用多窗口显示,在一个屏幕中同时对多个文件进行操作。我们还可以通过.vimrc文件定制的方法,来使用户在打开vi的时候获得自己熟悉的和适用于自己特殊目的的环境。

在编辑那些比较大的文件特别是程序文件的时候,vim比vi更方便一些。

二、Vim、Vi文本编辑器

1、安装vi编辑器

yum install -y vim

 

2、Vim三种工作模式(命令模式、输入模式和编辑模式)

图片[1]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

3、Vim的命令模式

默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

图片[2]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

4、Vim的输入模式

使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。

快捷键功能描述
i在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a在当前光标所在位置之后插入随后输入的文本
A在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令

图片[3]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

5、Vim 的编辑模式

编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。
使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

图片[4]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

6、vim打开文件

在命令行模式下打开一个自己编写的文件 /test/vi.test,打开方法如下:

[root@itxdl ~]# vim /test/vi.test

Vi 使用的选项说 明
vim filename打开或新建一个文件,并将光标置于第一行的首部
vim -r filename恢复上次 vim 打开时崩溃的文件
vim -R filename把指定的文件以只读方式放入 Vim 编辑器中
vim + filename打开文件,并将光标置于最后一行的首部
vi +n filename打开文件,并将光标置于第 n 行的首部
vi +/pattern filename打幵文件,并将光标置于第一个与 pattern 匹配的位置
vi -c command filename在对文件进行编辑前,先执行指定的命令

7、Vim 编辑快捷键

快捷键功能描述
i在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O(大写)在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a在当前光标所在位置之后插入随后输入的文本
A在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令

8、Vim 查找文本

快捷键功能描述
/abc从光标所在位置向前查找字符串 abc
/^abc查找以 abc 为行首的行
/abc$查找以 abc 为行尾的行
?abc从光标所在为主向后查找字符串 abc
n向同一方向重复上次的查找指令
N向相反方向重复上次的查找指定

在 /etc/passwd.vi 文件中查找字符串 “root”,则运行命令:

图片[5]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

查找的字符串是严格区分大小写的

9、Vim 替换文本

快捷键功能描述
r替换光标所在位置的字符
R从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
:s/a1/a2/g将当前光标所在行中的所有 a1 用 a2 替换
:n1,n2s/a1/a2/g将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
:g/a1/a2/g将文件中所有的 a1 都用 a2 替换

将某文件中所有的 “root” 替换为 “liudehua”,则有两种输入命令,分别为:

:1, $s/root/liudehua/g
或
:%s/root/liudehua/g

上述命令是在编辑模式下操作的,表示的是从第一行到最后一行,即全文查找 “root”,然后替换成 “liudehua”。
如果刚才的命令变成 :10,20 s/root/liudehua/g,则只替换从第 10 行到第 20 行的 “root”。

10、Vim删除文本

快捷键功能描述
x删除光标所在位置的字符
dd删除光标所在行
ndd删除当前行(包括此行)后 n 行文本
dG删除光标所在行一直到文件末尾的所有内容
D删除光标位置到行尾的内容
:a1,a2d函数从 a1 行到 a2 行的文本内容

注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 “p” 键,就可以将刚才删除的内容又粘贴到此处。

11、Vim复制和粘贴文本

快捷键功能描述
p将剪贴板中的内容粘贴到光标后
P(大写)将剪贴板中的内容粘贴到光标前
y复制已选中的文本到剪贴板
yy将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
yw将光标位置的单词复制到剪贴板

12、Vim其他常用快捷键

将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 “J” 键。

不小心误删除了文件内容,则可以通过 “u” 键来撤销刚才执行的命令。

13、Vim 保存退出文本

命令功能描述
:wq保存并退出 Vim 编辑器
:wq!保存并强制退出 Vim 编辑器
:q不保存就退出 Vim 编辑器
:q!不保存,且强制退出 Vim 编辑器
:w保存但是不退出 Vim 编辑器
:w!强制保存文本
:w filename另存到 filename 文件
x!保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令
ZZ直接退出 Vim 编辑器

“w!” 和 “wq!” 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行。

三、Vim移动光标快捷键汇总

Vim快捷方向键

快捷键功能描述
h光标向左移动一位
j光标向下移动一行(以回车为换行符),也就是光标向下移动
k光标向上移动一行(也就是向上移动)
l光标向右移动一位

Vim光标以单词为单位移动

快捷键功能描述
w 或 W光标移动至下一个单词的单词首
b 或 B光标移动至上一个单词的单词首
e 或 E光标移动至下一个单词的单词尾
nw 或 nWn 为数字,表示光标向右移动 n 个单词
nb 或 nBn 为数字,表示光标向左移动 n 个单词

Vim光标移动至行首或行尾

快捷键功能描述
0 或 ^光标移动至当前行的行首
$光标移动至当前行的行尾
n$光标移动至当前行只有 n 行的行尾,n为数字

Vim光标移动至指定字符

快捷键功能描述
fx光标移动至当前行中下一个 x 字符处
Fx光标移动至当前行中下一个 x 字符处

Vim光标移动到指定行

快捷键功能描述
gg光标移动到文件开头
G光标移动至文件末尾
nG光标移动到第 n 行,n 为数字
:n编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首

Vim光标移动到匹配的括号处

程序员在编辑程序时,经常会为将光标移动到与一个 “(” 匹配的 “)” (对于 [] 和 {} 也是一样的)处而感到头疼。Vim 里面提供了一个非常方便地査找匹配括号的命令,这就是 “%”。

用法:将光标先定位在 “{” 处,然后再使用 “%” 命令,使之定位在 “}” 处。

四、Vim 编辑器提供了撤销和恢复撤销的命令

1、Vim 撤销和恢复撤销快捷键

在 Vim 编辑器处于命令模式时才能使用。

快捷键功能
u(小写)undo 的第 1 个字母,功能是撤销最近一次对文本做的修改操作。
Ctrl+RRedo 的第 1 个字母,功能是恢复最近一次所做的撤销操作。
U(大写)第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。

2、Vim可视化模式及其用法

命令功能
v(小写)又称字符可视化模式,此模式下目标文本的选择是以字符为单位的,也就是说,该模式下要一个字符一个字符的选中要操作的文本。
V(大写)又称行可视化模式,此模式化目标文本的选择是以行为单位的,也就是说,该模式化可以一行一行的选中要操作的文本。
Ctrl+v(组合键)又称块可视化模式,该模式下可以选中文本中的一个矩形区域作为目标文本,以按下 Ctrl+v 位置作为矩形的一角,光标移动的终点位置作为它的对角。

Vim 成功进入该模式的标志是窗口底部出现 –VISUAL– 标志

常用的几个可以在可视化模式下使用的命令。

命令功能
d删除选中的部分文本。
D删除选中部分所在的行,和 d 不同之处在于,即使选中文本中有些字符所在的行没有都选中,删除时也会一并删除。
y将选中部分复制到剪贴板中。
p(小写)将剪贴板中的内容粘贴到光标之后。
P(大写)将剪贴板中的内容粘贴到光标之前。
u(小写)将选中部分中的大写字符全部改为小写字符。
U(大写)将选中部分中的小写字符全部改为大写字符。
>将选中部分右移(缩进)一个 tab 键规定的长度(CentOS 6.x 中,一个tab键默认相当于 8 个空白字符的长度)。
<将选中部分左移一个 tab 键规定的长度(CentOS 6.x 中,一个tab键默认相当于 8 个空白字符的长度)。

五、Vim多窗口编辑模式

在査看 /etc/passwd 时需要参考 /etc/shadow,有两种办法可以实现:

1)先使用 Vim 打开第一个文件,接着输入命 令 “:sp/etc/shadow” 水平切分窗口,然后按回车键;如果想垂直切分窗口则可以输入 “:vs/etc/shadow”;

2)执行命令”vim -o 第一个文件名 第二个文件名”, “vim-o /etc/passwd /etc/shadow”。

图片[6]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站Linux学习-文本编辑器详解 - 众客华禹众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹

切换到另一个文件窗口,可以按 “Ctrl+WW” 快捷键。

如果想将一个文件的内容全部复制到另一个文件中,则可以输入命令 “:r 被复制的文件名”,即可将导入文件的全部内容复制到当前光标所在行下面。

六、Vim批量注释和自定义注释快捷键

1、在指定范围行加”#”注释,可以使用 “:起始行,终止行 s/^/#/g”

:1,10s/^/#/g

表示在第 1~10 行行首加”#”注释。”^”意为行首;”g”表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将 “g” 改为 “c”。

2、取消连续行注释,则可以使用 “:起始行,终止行s/^#//g”

:1,10s/^#//g
意为将行首的”#”替换为空,即删除。

3、添加”//”注释要稍微麻烦一些,命令格式为 “:起始行,终止行 s/^/\/\//g”

:1,5s/^/\/\//g
表示在第 1~5 行行首加”//”注释,因为 “/” 前面需要加转义字符 “\”,所以写出来比较奇特。

4、Vim显示、隐藏行号

:set number 或者 :set nu                显示行号

:set nonumber 或者 :set nonu        隐藏行号

5、永久显示行号

设置配置文件,两种配置方式

/etc/vimrc   是系统范围的初始化配置

~/.vimrc     个人的vim初始化配置

输入set number 或者 set nu

七、Vim中执行Linux命令的几种方式

1、将一个命令的输出结果存入正在编辑的文件;

首先,我们新建一个 demo.txt 文件,并手动输入如下内容,并将光标移动至下一行开头:
http://c.biancheng.net
在此基础上,按 Esc 令 Vim 返回到命令模式,再按下!!,这时在窗口的左下角会出现:.!的提示信息,这就表明我们可以输入 Linux 命令了。我们输入 date 命令 注意,窗口左下角的:.!表示操作文本的范围,其中 . 表示从光标所在行开始,! 表示后续会执行 Linux 命令,整体表示命令的执行结果将插入到光标所在行的位置,因此,如果光标所在位置处有数据,就会被命令的执行结果直接覆盖掉。 确认光标位置无误后,按 Enter(回车)键,这时会发现系统当前的日期和时间写到了 demo.txt 文件中第 2 行的位置: http://c.biancheng.net Tue Nov 12 07:20:49 PST 2017
格式功能
:!命令直接运行一个 Linux 命令,运行完毕之后,即可返回到 Vim 中。
:w!命令将 Vim 中所有的文本内容作为指定命令的输入。但命令的执行结果不会写入到当前文件中。
:r!命令将命令执行的结果写入到当前 Vim 中,例如 :!ls 表示将 ls 的执行结果输入到 Vim 中。
:nr!命令其中 n 为数字,表示将命令的执行结果写入到 Vim 第 n 行的位置。例如,:3r!date 表示将 date 命令的执行结果写入到第 3 行文本处。
:n,m!命令其中 n 表示起始行号,m为结束行号,功能是将 Vim 中指定的部分文本作为某个命令的输入,同时将命令的输出也插入到当前指定的位置。
:n,m w!命令其中 n 表示起始行号,m为结束行号,其功能是 Vim 中指定的部分文本作为某个命令的输入,但命令的执行结果不会写入到文件中。
!!date向 Vim 中插入当前时间。

2、将正在编辑的文件中的一些数据作为某个指定 Linux 命令的输入。

在此基础上,再向该文件中手动输入以下数据:
http://c.biancheng.net
Tue Nov 12 07:20:49 PST 2017
1 C语言中文网
3 c.biancheng.net
2 Linux教程
输出完成之后,将光标调整至第 3 行第 1 个字符的位置,然后按 Esc 使 Vim 进行命令模式,并按下!}组合键,你会看到窗口的左下角出现:.,$!的提示信息 其中 . 表示光标所在的当前行,$ 表示文件最后一行,因此和之前不同,这次选取的是文件中第 3 行及之后的所有内容。
在此基础上,我们使用 sort 命令对选中文本按照第 1 列进行降序排序,执行命令如下:
:.,$!sort -nr -k1
按 Enter(回车)键,可以看到,demo.txt 文件中的内容变成:
http://c.biancheng.net
Tue Nov 12 07:20:49 PST 2017
3 c.biancheng.net
2 Linux教程
1 C语言中文网
通过将所选文件作为 sort 命令的输入,实现了对该部分文本的降序排序操作。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容