龙空技术网

Linux学习-文本编辑器详解

DIY日常记录 237

前言:

此刻兄弟们对“centos编辑文本”大致比较注意,大家都想要知道一些“centos编辑文本”的相关文章。那么小编在网上网罗了一些对于“centos编辑文本””的相关内容,希望小伙伴们能喜欢,你们一起来了解一下吧!

一、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三种工作模式(命令模式、输入模式和编辑模式)

3、Vim的命令模式

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

4、Vim的输入模式

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

快捷键

功能描述

i

在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动

I

在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令

o

在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本

O

在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

a

在当前光标所在位置之后插入随后输入的文本

A

在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令

示意图:

5、Vim 的编辑模式

编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这时就可以输入相关指令进行操作了。指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

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”,则运行命令:

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

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 或 nW

n 为数字,表示光标向右移动 n 个单词

nb 或 nB

n 为数字,表示光标向左移动 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+R

Redo 的第 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”。

切换到另一个文件窗口,可以按 “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 文件,并手动输入如下内容,并将光标移动至下一行开头:

在此基础上,按 Esc 令 Vim 返回到命令模式,再按下!!,这时在窗口的左下角会出现:.!的提示信息,这就表明我们可以输入 Linux 命令了。我们输入 date 命令

注意,窗口左下角的:.!表示操作文本的范围,其中 . 表示从光标所在行开始,! 表示后续会执行 Linux 命令,整体表示命令的执行结果将插入到光标所在行的位置,因此,如果光标所在位置处有数据,就会被命令的执行结果直接覆盖掉。

确认光标位置无误后,按 Enter(回车)键,这时会发现系统当前的日期和时间写到了 demo.txt 文件中第 2 行的位置:

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 命令的输入。

在此基础上,再向该文件中手动输入以下数据:

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 文件中的内容变成:

Tue Nov 12 07:20:49 PST 2017

3 c.biancheng.net

2 Linux教程

1 C语言中文网

通过将所选文件作为 sort 命令的输入,实现了对该部分文本的降序排序操作。

标签: #centos编辑文本