Linux文本编辑

Vim 的安装

众多 Linux 发行版系统,一般都已经默认安装好了 vi 或 Vim 文本编辑器,Centos 也不例外,该系统就默认安装有 vi 文本编辑器,但建议你们使用 Vim。
html

若是在命令行模式下输入“vim”,输出结果为“Command not found”,则表示此系统中未安装 Vim。程序员

CentOS 系统中,使用以下命令便可安装 Vim:vim

yum install vimssh

须要注意的是,此命令运行时,有时须要手动确认 [y/n],如图 1 所示:编辑器


图 1 安装过程ide

遇到此状况,选择 “y” 便可。
若是你想省略手动输入“y”的过程,但愿全自动安装,可使用以下这条命令:
函数

yum -y install vimspa

当命令行中输入“Vim”显示如图 1 所示的画面时,视为 Vim 安装成功。.net

Vim 安装成功界面

                             图 1 Vim 安装成功界面命令行

Vim的命令模式

使用 Vim 编辑文件时,默认处于命令模式。此模式下,可以使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还能够对文件内容进行复制、粘贴、替换、删除等操做。
图 2 所示是在 CentOS 6.x 系统中 Vim 处于命令模式的状态示意图。

Vim 处于命令状态
                      图 2 Vim 处于命令状态

Vim的输入模式

在输入模式下,Vim 能够对文件执行写操做,相似于在 Windows 系统的文档中输入内容。
使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键便可返回命令模式。

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

图 4 所示即为 Vim 处于输入模式状态下的示意图。

Vim处于输入模式
图 4 Vim 处于输入模式

Vim 的编辑模式

编辑模式用于对文件中的指定内容执行保存、查找或替换等操做。
使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就能够输入相关指令进行操做了。

指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 便可。

图 4 所示为 Vim 进入编辑模式后的状态。

Vim进行编辑模式
图 4 Vim 进行编辑模式


Vim 打开文件

使用 Vim 打开文件很简单,例如在命令行模式下打开一个本身编写的文件 /test/vi.test,打开方法以下:

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

刚打开文件时 Vim 处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等,此时可使用插入命令进入输入模式对文件进行编辑,如图 1 所示。



图 1 Vim 打开文件

 

除此以外,咱们还能够利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,能够大大提升咱们的效率。

表 2 Vim 打开文件的快捷方法
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 在对文件进行编辑前,先执行指定的命令

使用 Vim 进行编辑

一样,Vim 提供了大量的编辑快捷键,主要可分为如下几类。

Vim 插入文本

从命令模式进入输入模式进行编辑,能够按下 I、i、O、o、A、a 等键来完成,使用不一样的键,光标所处的位置不一样,如表 3 所示。

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

Vim 查找文本

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

例如,在 /etc/passwd.vi 文件中查找字符串 "root",则运行命令如图 5 所示。


图 5 使用 Vim 进行查找

若是在文件中并无找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示,如图 6 所示。



图 6 未查找到指定字符串的提示


在查找过程当中须要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会获得不一样的结果。

若是想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。

若是在字符串中出现特殊符号,则须要加上转义字符 "\"。常见的特殊符号有 \、*、?、$ 等。若是出现这些字符,例如,要查找字符串 "10$",则须要在命令模式中输入 "/10\$"。

Vim 替换文本

表 7 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"。

Vim删除文本

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

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

Vim复制和粘贴文本

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

Vim其余经常使用快捷键

某些状况下,可能须要把两行进行链接。好比说,下面的文件中有两行文本,如今须要将其合并成一行(实际上就是将两行间的换行符去掉)。能够直接在命令模式中按下 "J" 键,按下先后如图 10 所示。



图 10 按下 "J" 键先后


若是不当心误删除了文件内容,则能够经过 "u" 键来撤销刚才执行的命令。若是要撤销刚才的屡次操做,能够多按几回 "u" 键。

Vim 保存退出文本

Vim 的保存和退出是在编辑模式中进行的,其经常使用命令以下表所示。

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


须要注意的是,"w!" 和 "wq!" 等相似的指令,一般用于对文件没有写权限的时候(显示 readonly,如图 12 所示),但若是你是文件的全部者或者 root 用户,就能够强制执行。



图 12 只读文件

Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率过低,更高效的方式使用快捷键。
Vim 移动光标经常使用的快捷键及其功能以下面各表所示,须要注意的是,表中全部的快捷键都在命令模式(默认状态)下直接使用。

Vim快捷方向键

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

最初使用,你们可能以为比较别扭,但熟能生巧,使用此方式移动光标一样可以提升编辑速度。

Vim光标以单词为单位移动

某些情形下,可能须要光标迅速移动至一行中的某个位置,将光标以单词为单位进行移动就会很方便。

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

Vim光标移动至行首或行尾

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

Vim光标移动至指定字符

一行中,若是须要将光标移动到当前行的某个特色字符,则可使用表 4 中的快捷键。

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

Vim光标移动到指定行

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

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

程序员在编辑程序时,常常会为将光标移动到与一个 "(" 匹配的 ")" (对于 [] 和 {} 也是同样的)处而感到头疼。Vim 里面提供了一个很是方便地査找匹配括号的命令,这就是 "%"。
好比,在 /etc/init.d/sshd 脚本文件中(最好仍是复制后练习,当心驶得万年船),想迅速地将光标定位到与第 49 行的 "{" 相对应的 "}" 处,则能够将光标先定位在 "{" 处,而后再使用 "%" 命令,使之定位在 "}" 处,如图 6 所示。


使用"%"命令定位括号
图 6 使用"%"命令定位括号


Vim多窗口模式

  1. Vim中的多窗口打开

vim中,默认的多窗口打开,是横向分割窗口。

进入vim编辑器之后,能够经过new命令,新建一个子窗口

:new  “新建一个未命名窗口

:new name "新建一个名为name的文件

    进入vim之后,也能够经过splite来进行横向窗口分割

     :split name "在当前位置打开name文件 将原来文件向下移动

     :sp name "是splite的缩写 与split功能相同

    进入vim后,也能够经过vsplit进行窗口纵向分割

     :vsplit name "在当前位置打开name文件 将原来文件向右移动

     :vs name "是vsplite的缩写 与vsplit功能相同

  2. Vim中的多窗口切换

    vim中的多窗口切换能够经过Ctrl+w组合键加上方向选择键来实现

    横向分割的窗口能够经过Ctrl+w+j/k或者Ctrl+w+(UP)/(DOWN)来实现上下窗口间切换

    纵向分割的窗口能够经过Ctrl+w+h/l或者Ctrl+w+(LEFT)/(RIGHT)来实现上下窗口间切换

    连续两次按下Ctrl+w也组合键能够实现多个窗口间的依次切换

  3. Vim中多窗口的调整

    窗口的调整能够分为绝对值调整和增量式调整

    绝对值调整以下:

     :resize num "将窗口的高度调整为num行

     :res num "resize的缩写模式 与resize实现一样的功能   

     :vertical resize num "将窗口的宽度调整为num列

     :verticalres num "verticalresize的缩写模式 与verticalresize实现一样的功能

    增量式调整以下:

     :resize+num "将窗口的高度增长num行

    :resize-num "将窗口的高度减小num行

     :vertical resize+num "将窗口的宽度增长num列

    :vertical resize-num "将窗口的宽度减小num列

    将resize简写为res能实现一样的功能。
  4.Vim中多窗口的关闭

    vim中多窗口的关闭与单个窗口的关闭基本类似

     :q "退出当前所在的窗口

     :qa "退出全部的窗口

转自:http://c.biancheng.net/view/3005.html

相关文章
相关标签/搜索