在Linux中使用文本编辑器来编辑你的Linux参数配置文件是一件很重要的事情,因此系统管理员至少应该熟悉一种文本编辑器。
在Linux世界里,绝大部分的配置文件都是以 ASCII(键盘上面可找到的)的纯文本形式,(发音:/ˈæski/ass-kee[1],AmericanStandardCode forInformationInterchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。 从[ 0000 0000 - 0111 1111 ]共128个字符。
vi 文本编辑器
所有的 Unix Like 系统都会内置 vi 文本编辑器,其他的文本编辑器则不一定存在;
很多软件的编辑接口都会主动调用 vi (如 crontab等命令);
vim 具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;
程序简单,编辑速度相当快速。
vim 其实相当于 vi 的高级版本,vim可以用颜色或底线等方式来显示一些特殊信息。
在vi 里面,[ Tab ] 键所得到的结果与空格符得到的结果是不一样的,特别强调一下。
在 vi 中,数字是很有意义的。数字通常代表重复做几次的意思,也有可能是代表去到第几个什么什么的意思。
vim 的保存文件、恢复与打开时的警告信息
当我们在使用 vim 编辑时,vim 会在被编辑的文件目录下再建一个名为 .filename.swp 的暂存文件。
由于 vim 的工作被不正常中断,导致暂存盘无法通过正常流程来结束,所以暂存文件就不会消失,而继续保留下来。此时继续编辑文件就会出现某些情况。
1:可能有其他人或程序同时在编辑这个文件;
2:在前一个 vim 的环境中,可能因为某些不明原因导致 vim 中断(crashed)。
vi 的三种模式:一般模式、编辑模式、命令行模式
一般模式 删除、复制与粘贴
x,X x为向后删除一个字符,X为先前删除一个字符
nx(n代表数字) 向后删除n个字符
dd 删除当前行
D 删除当前行所有字符,使成为空行
ndd(n代表数字) 删除光标所在行的向下n列
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在行到最后一行的所有数据
yy 复制光标所在行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
ynj(n代表数字) 复制光标所在行向下n+1行
dnj(n代表数字) 删除光标所在行向下n+1行
p,P p为复制的数据粘贴在光标的下一行,P为复制的数据粘贴在光标的上一行
J 将光标所在行与下一行的数据结合成一行
u 恢复前一个操作(undo)
ctrl + r 重做上一个操作
. 重复前一个操作
编辑模式
i,I i为在当前光标所在处插入输入的文字,I为在光标所在行第一个非空字符插入输入的文字
a,A a为在当前光标所在处下一个字符插入输入的文字,A为在光标所在行最后一个字符的下一个字符处插入输入的文字
o,O o为在光标所在行的下一行行首开始插入字符,O为在光标所在行的上一行行首开始插入字符
r,R r为替换光标所在那一个字符,R为一直替换光标所指的文字,直到退出
Esc 退出,回到一般模式
命令模式 光标移动
h 光标向左移一个字符
j 光标向下移一个字符
k 光标向上移一个字符
l 光标向右移一个字符
Ctrl+f (Page Down) 屏幕向下翻一页
Ctrl+b (Page Up) 屏幕向上翻一页
Ctrl+d 屏幕向下翻半页
Ctrl+u 屏幕向上翻半页
+ 光标移动到下一行的第一个非空字符
- 光标移动到当前行的第一个非空字符
n空格(n代表数字) 光标向当前行向右移动n个字符
0(数字0) 光标移动到当前行的第一个字符(可以为空字符,注意与-区分)
$ 光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)
H 光标移动到当前屏幕最上方的那一行的第一个非空字符
M 光标移动到当前屏幕最中间那一行的第一个非空字符
L 光标移动到当前屏幕最下方的那一行的第一个非空字符
G 光标移动到该文章最后一行的第一个非空字符
gg 移动到这个文件的第一行,相当于 1G
nG(n代表数字) 光标移动到该文章第n行的第一个非空字符
/word 在光标之后查找word字符串 # 使用 /word 配合 n 以 N 是非常有帮助的。可以让你重复地查找到一些关键字
n 这个 n 为英文字符,代表重复前一个查找的操作。
?word 在光标之前查找word字符串
:s/word1/word2/g 在光标当前行查找word1,并替换成word2
:n1,n2s/word1/word2/g 在第n1行与第n2行之间查找word1,并替换成word2
:%s/word1/word2/gc 整个文章查找word1,并替换成word2,且在替换前显示提示字符给用户确认(confirm)
:w 将编辑的数据保存到硬盘文件中
:w [filename] 将编辑后的数据保存到硬盘的另一个文件中
:r [filename] 在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容加到光标所在行下一行
:wq或:x 保存并退出
:q 退出,适用于未修改的文件
:q! 强制退出,适用于修改文件后不保存退出
:!command 执行命令
:r !command 将命令结果写入
:set nu 显示行号
:set nonu 取消行号
:n1,n2 w [filename] 将n1到n2行的内容保存到名为filename的文件中
vim 的功能
1、块选择(Visual Block)
2、多文件编辑
3、多窗口功能
4、vim 环境设置与记录: ~/.vimrc,~/.viminfo
因为我们的vim会主动将你曾经做过的行为记录下来,好让你下次可以轻松作业。那个记录操作的文件就是:~/.viminfo。 如果你曾经使用过vim,那你的主文件夹应该会存在这个文件才对。这个文件是自动产生的,你不必自行创建。
此外,每个distribution对vim的默认环境都不太相同,举例来说,某些版本在查找到关键字时并不会高亮反白,有些则会自动帮你进行缩进排列。其实这些都是可以自行设置的。那就是vim的环境设置。
整体的vim的设置值一般时放置在 /etc/vimrc 这个文件中,不过不建议你修改它。你可以新建 ~/.vimrc 将你的值写入。
举例如下:
5、vim 常用命令示意图
其他vim使用注意事项
1、中文编码问题
你的Linux系统默认支持的语系数据,这与 /etc/sysconfig/i18n 有关;
你的终端接口(bash)的语系,这与 LANG这个变量有关;
你的文件原本的编码;
打开终端机的软件。
修改语系编码:
LANG=zh_CN.utf-8
2、DOS 与 Linux 的断行字符
Linux的【Enter】为LF符号($),由于DOS的断行符号是CRLF(^M$),也就多出来了一个CR(^M)。这样写出来的程序可能就会出现问题而无法执行。
如果在不同的系统之间复制一些纯文本文件时,千万记得要使用 UNIX2dos 或者 dos2UNIX 来转换一下断行格式。
3、语系编码转换
使用 iconv 这个命令来进行编码转换
iconv -f gbk -t utf-8 aaagbk
重点回顾
Linux下配置文件多位文本文件,故使用vim即可进行编辑;
vim可视为程序编辑器,可用以编辑 shell script 、配置文件等;
vi 为所有UNIX like 的操作系统都会存在的编辑器,且执行速度块;
vi 的界面大致可以分为两部分:上半部的本文与最后一行的状态+命令行模式;
数字是有意义的,用来说明重复进行几次操作的意思,如 5yy 为复制5行的意思;
小数点“.”为重复进行前一次操作,也是经常使用的按键功能;
vim会主动创建swap暂存文件,多疑不要随意断线;
可以使用 ctrl + v 进行复制/粘贴/删除的行为;
使用 :sp 功能可以切割窗口;
vim的环境设置可以写入 ~/.vimrc 文件中;
可以使用 iconv 进行文件语系编码的转换;
使用 dos2UNIX 及 UNIX2dos 可以变更文件每一行的行尾断行符。