一、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 文件,并手动输入如下内容,并将光标移动至下一行开头: 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 命令的输入,实现了对该部分文本的降序排序操作。
暂无评论内容