10.1 vim
Vim是一种命令行界面的文本编辑器,是高级版的vi,在linux中可以使用vim来编辑linux参数配置文件。vim不但可以用不同颜色显示文字内容,或用颜色底线等方式显示一些特殊信息,还能够进行诸如shell脚本,C等程序编辑功能,也可以使用vim来编辑网页文章。另外,很多软件的编辑接口都会主动调用vi(如edquota,visudo等命令),vim里面加入了许多额外的功能,例如支持正则表达式的查找架构,多文件编辑,块复制等。
10.2 vi的使用
10.2.1 三个模式
10.2.2 按键说明
10.2.3 一个案例练习
1,新建目录/tmp/vitest并复制文件man.config到此目录下,用vi读取:
2,进入vi编辑环境后,进行:set nu,:50,100s/man/MAN/gc,/bzip2,u等操作,最后输入:q!强制离开不存储。
10.2.4 vim的保存文件,恢复与打开时的警告信息
当系统因为某些原因突然断电或死机时,需要我们将未保存的数据救回来,vim有这样的恢复功能,在vim所编辑的目录下会新建一个.filename.swp的文件,如上节的man..config操作就在文件.man.config.swp当中。
输入vim man.config,进入vim的一般模式,之后Crtl + z,使vim丢到后台执行,使用kill停止vim的工作。
由于暂存文件.man.config.swp的关系,vim判断你的文件可能会有问题,如下,1.可能其他用户也在编辑这个文件;2,可能一些不明原因导致了vim中断。
6个可用按钮的作用:O:只读该文件而并不编辑该文件;E:编辑文件,但并不载入暂存文件;R:加载暂存文件并自行删除;D:删除暂存文件并不载入;Q:离开vim;A:忽略编辑行为,离开vim。
10.3 vim的功能
由于man.config是系统规划的配置文件,因此vim会进行语法检验,所以你会看到界面内主要为深蓝色,切身蓝色那一行是以批注符号(#)为开头。
10.3.1 块选择(Visual Block)
V:字符选择;v:行选择;Ctrl+v:长方形块选择;y:将前三个v操作选择的反白部分复制起来;d将反白部分删除
以vim man.config为例,如下:
10.3.2 多文件编辑
:n编辑下一个文件;:N编辑上一个文件;:files列出目前这个vim打开的所有文件
举例:1,在/tmp/vitest目录下,进行以下操作:
cp /etc/yum.conf .
vim yum.conf man.config
2,使用命令“:files”查看有哪些编辑文件
3,在文件yum.conf中,先按1G到第一行,之后4yy复制前四行;输入“:n”进入man.config中,按下G到最后一行,按下‘P’粘贴,如下:
4,多次按下u还原操作,最后按下q离开vim多文件编辑器。
10.3.3 多窗口编辑
vim具有切割窗口或者是冻结窗口的功能,可将文件切割成多个窗口,只需输入“:sp”。如果想要在新窗口中启动另一个文件,就输入“:sp{filename}”。
Crtl + w + 上移/下移:使窗口进行切换
结束多窗口:光标移动到某界面,一个接一个的按“:q”。
10.3.4 vim环境设置与记录:~/.vimrc,~/.viminfo
如上次查找的字符串反白情况在本次vim编辑环境中还是反白,刚打开文件时,光标停留在上次离开文件的那一行上。这是因为vim会主动将你曾经做过的行为记录到文件~/.viminfo中。
10.4 其他vim使用注意事项
10.4.1 中文编码问题
无法显示正常的中文,可能因为编码的问题,需考虑:
1,你的Linux默认支持的语系;2,你的终端接口(bash,与LANG有关)的语系;3,你的文件原本的编码;4,所使用的终端机软件的编码,如GNOME界面。
一般只要3和4编码一致,就不会出现乱码,应尽可能使用utf8统一编码。
如何修正问题:
LANG=zh_CN.big5
在终端界面工具栏中:“终端机”——》“设置字符编码”——》“中文(繁体)(BIG5)”
10.4.2 DOS与Linux的断行字符
在DOS(Windows系统)建立的文件的特殊格式中,DOS使用的断行字符为^M$,即CR和LF两个符号。而在Linux中,则是仅有LF($)这个符号。在Linux系统中执DOS文件时,可能误判程序所执行的命令内容。我们可以通过简单的命令来进行格式的转换:
dos2UINX [-kn] file [newfile]
UINX2dos [-kn] file [newfile]
-k:保留该文件原本的mtime时间格式;-n:保留原本的旧文件
用法:dos2UINX -k -n man.config man.config.linux
10.4.3 语系编码转换
如想将big5编码转成utf8,可直接利用iconv这个命令
iconv --list:列出iconv支持的语系数据
-o filename:如果想保留原本的文件,则使用-o新文件名
用法:
iconv -f 原本编码 -t 新编码 filename [-o newfile]
iconv -f big5 -t utf8 vi.big5 -o vi.utf8
将繁体中文的vi.utf8转成简体的utf8时,需借助中间的简体中文的gb2312,可以:
iconv -f utf8 -t big5 vi.utf8 | iconv -f big5 -t gb2312 \
> iconv -f gb2312 -t utf8 -o vi.gb.utf8