chap10vim程序编辑器
意义
所有UNIX Like系统都会内置vi文本编辑器,其他文本编辑器不一定存在
很多软件的编辑接口都会主动调用vi
vim具有程序编辑的能力,可以主动以字体颜色辨别语法正确性,方便程序设计
程序简单,编辑速度相当快速
vi包括三种模式
一般模式
移动光标、删除字符或整行、复制、粘贴
编辑模式
左下角有INSERT或REPLACE字样
命令行模式
查找数据、读取、保存、大量替换字符、离开、显示行号等功能
vi下的[tab]按键与空格符结果不同
常用命令
一般模式
[ctrl] + [f] / [page down]:下翻一页
[ctrl] + [b] / [page up]:上翻一页
0 / [home]:移动到行首
$ / [end]:移动到行末
G:移动到最后一行
nG:移动到第n行
gg:移动到第一行
N[Enter]:下移N行
/word:向下查找word
?word:向上查找word
:n1,n2s/word1/word2/g:在第n1~第n2行间查找word1并替换为word2
n2可以用$代替,代表最后一行
g若改为gc,表示确认(confirm)模式,每次询问是否要替换
x / [Del]:向后删除字符
X / [Backspace]:向前删除字符
dd:删除整行
ndd:删除以下的n行
yy:复制整行
nyy:复制以下的n行
p:(小写)粘贴到下一行
P:(大写)粘贴到上一行
u:复原前一个操作
[ctrl] + r:重做上一个操作
.:(小数点)重复上一个操作
块选择——
V:字符选择、行选择
[ctrl] + v:长方形的块选择
y:复制选择块
d:删除选择块
从一般模式切换到编辑模式
Insert mode:
i:当前字符处插入
I:本行第一个非空字符处插入
a:下一个字符处插入
A:本行最后一个字符处插入
o:在下一行插入新行
O:在上一行插入新行
Replace mode:
r:只替换当前字符一次后自动退出
R:持续替换字符,直到手动退出
[Esc]:退出到一般模式
从一般模式到命令行模式
:w:保存
:w!:强制写入,主动修改文件权限(如果你能够修改的话)
:q:离开
:q!:强制离开而不保存
:wq:保存并离开
:w[filename]:另存为filename
:! command:暂时离开vi,在终端执行command命令
环境参数设置——
:set nu:显示行号
:set nonu
:set hlsearch:(默认)高亮度查找(匹配字符串反白)
:set nohlsearch
:set autoindent:自动缩排
:set noautoindent
:set backup:主动备份当前编辑的(file)文件为(file~)文件
:set ruler:显示状态栏
:set showwmode:在左下角显示--INSERT--等字眼
:set backspace=[0 | 1 | 2]:退格键模式
0或1为仅可删除刚刚输入的字符
2为可以删除任意字符
:set all:显示所有环境参数设置
:set:显示你手动修改过的参数设置
:syntax on:根据语法对关键词进行不同颜色的显示
:syntax off
:set bg=[dark | light]:颜色色调样式
多文件编辑——
一开始打开文件时就可以同时打开多个文件(空格隔开)
:n:编辑下一个文件
:N:编辑上一个文件
:files:列出目前所有文件
:sp:为当前文件打开一个新窗口
:sp filename:打开另一个文件
[ctrl] + [w] + [j]/[↓]:切换到下一个窗口
组合键用法:先同时按下[ctrl]和[w],松开后按下[j]或[↓]
[ctrl] + [w] + [k]/[↑]:切换到上一个窗口
[ctrl] + [w] + [q]:关闭当前窗口
也可以切换到该窗口后通过:q关闭
感叹号(!)表示强制
命令前的数字表示“重复几次”或“第几”
编辑过程中,vim会主动在文件目录下创建名为.filename.swap的文件,为文件恢复提供依据
文件错误
问题一:有其他人或程序同时编辑一个文件
问题二:vim环境异常关闭
打开文件时会出现错误信息和以下操作选项:
[O]pen read-only:以只读的形式打开
[E]dit anyway:不载入暂存文件内容,以正常模式打开
但是容易出现多人互相修改对方文件的问题
[R]ecover:加载暂存文件,恢复文件数据
[D]elete it:删除暂存文件
[Q]uit:离开
[A]bort:与Quit差不多
大部分distributions已经用vim替代vi
把vi作为vim命令的别名了!
vim会主动把我们曾经的行为记录到~/.viminfo文件内
整体vim的设置值放置在/etc/vimrc文件内
不过不建议修改,而应修改~/.vimrc文件(如果不存在,可以手动创建)
书写规则
一个值一行
跟命令行设置环境参数形式相同,也可以省略冒号(:)
双引号(")表示注释
并不是把注释包含起来
只需要在开头写上引号
中文编码的显示
考虑因素
系统默认支持的语系数据,与/etc/sysconfig/i18n文件有关
终端接口的语系,与变量LANG有关
文件原本的编码
打开终端的窗口界面的编码
Windows上的软件经常默认使用big5编码
Linux的tty1~tty6默认不支持中文编码
DOS与Linux的断行字符
“^M”称为CR符号
“$”称为LF符号
DOS采用CRLF作为断行字符(即“^M$”)
Linux采用LF作为断行字符(即“$”)
所以纯文本文件在不同系统上打开需要转换不同的格式
dos2UNIX [-kn] file [newfile]
UNIX2dos [-kn] file [newfile]
-k:保留原本的mtime
-n:保留源文件,将结果输出到新文件newfile
嘿嘿,这里的2就是two表示to哦!
Windows下把文件编辑后不建议直接上传到Linux系统
语系编码转换:iconv
显示:iconv --list
列出iconv支持的语系数据
修改:iconv -f 原本编码 -t 新编码 filename [-o newfile]
-o:保留源文件,新建编码文件
将繁体中文的big5,utf8转换为简体中文的gb2312
iconv -f big5 -t gb2312 **.big5 -o **.gb
将繁体中文的utf8转换为简体中文的utf8
iconv -f utf8 -t big5 **.utf8 | > iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o **.gb.utf5