文本编辑器分为:
行编辑器:sed,stream EDitor
全屏幕编辑器:nano,emacs,vi--visual interface
vi是模式化编辑器:
vi的增强版:vi improved, vim
vi&vim的模式有:
编辑模式:也叫命令模式
输入模式:
末行模式:
启动vim:
vim [option] FILE ...
vim +n:打开时光标位于第几行, n为打开vim时光标所在的行
vim +/PATTERN FILE ...第一次出现有pattern出现的行
如何退出vim:
按SHIFT键+:(冒号),再输入q 即可退出
一旦编辑了文本,再退出时:
不保存 :q!
保存 :wq
强制保存 :w!
在编辑模式,保存用:
shift ZZ
打开默认模式:编辑模式
SHIFT+:进入末行模式
编辑模式-->输入模式:
i:当前光标所在字符前插入
a:当前光标所在字符后插入
o:在当前光标所在行的下一行新增一行
I:当前光标所在行的行首插入
A:当前光标所在行的行尾
O:当前光标所在的上方新增空白行并输入
c:先删除指定范围的内容,在转换至输入模式
#c:删除多少行
模式间的转换:
输入模式-->编辑模式:
按ESC键
编辑模式-->末行模式:
SHIFT+:
末行模式-->编辑模式:
ESC键
输入模式不能转换到末行模式
光标跳转:
h : 向左
j : 向下
k : 向上
l : 向右
词间跳转:
w键:跳到下一个单词词首
#w:w前加一个数字,表示跳几个单词,达到行首
e:跳转至后面一个的词尾
b:跳转至前面一个的词首 前面可以见相应数字,表示跳转几个
行首、行尾:
^ :跳到第一个非空白字符处
数字0:绝对行首 (Tab键除外)
$:绝对行尾
行间跳转:
#G:表示跳到第几行,#表示数字
G:跳转至文件尾部
末行模式下:
:# 冒号加要跳转的行数,#表示行数
翻屏操作:
ctrl+f键:向文件尾部翻屏
ctrl+b键:向文件首部屏幕
ctrl+d键:向文件尾部翻半屏
ctrl+u键:向文件首部翻半屏
删除命令:
x:删除光标处的一个字符
#x:删除n个
X:往光标前删除
d:删除行::
#d:删除多少行
dw,d$,d0 光标往前走不会包含光标处得字符
d命令结合跳转命令
dd:删除光标所在行
#dd:删除多少行
末行模式下的删除:
地址定界:1,50d 表示删除第一行到第50行
ADDR1,ADDR2
.:表示当前行
$:表示尾行
.,$:表示所有行
相对地址定界:+#,-#
.,$-1:表示倒数第二行
/PATTERN1/,/PATTERN2/ 从下一个P1模式第一次出现到P2第一次出现
粘贴:
p:
删除或复制的是整行:在当前光标所在行下方粘贴
删除的是单词或行的部分:在当前光标所在处后方粘贴
P:
删除或复制的是整行:在当前光标所在行上方粘贴
删除的是单词或行的部分:在当前光标所在处前方粘贴
yy:复制
y:w,b,e,^,o,$
yy:vv
#yy
可视化模式:
v:按字符选取 (可配合h,j,k,l键使用)
V:按行选取(高亮显示,可以配合上下键,选取可视化区域)
撤销编辑操作:
u:撤销上一次编辑操作
ctrl+r:撤销最后一次的撤销操作
在末行模式下,不支持#u
在命令(编辑)模式下可以用#u
搜索:vim
/keyword:
?keyword:
n:向下搜索
N:向上搜索
搜索到的内容会高亮显示::
查找并替换:
在末行模式下使用s命令
:定界s/查找的内容/替换成的内容/gi
查找的内容:支持正则表达式
替换成的内容:不支持正则表达式,但可使用前向引用
修饰符:
g:全局替换
i:忽略大小写
如把/etc/rc.d/rc.sysinit中前20行的uname替换成username:
1,20s/uname/username/g
&:用于引用查找到的整个字符串
定界符:
1,$ = % 表示全文查找
:%s/\/etc/sysconfig\/network/&s/g
分隔符:
/:
#
s###
s@@@ aite
在末行模式下:
!shell command :(!加shell命令)直接执行shell命令
定界符:
窗口拆分:
ctrl+w,s:水平拆分(先按shift键和w键,松开后,再按s键)
ctrl+w,v:垂直拆分
ctrl+w,q 取消拆分
使用vim打开多个文件:
vim FILE1 FILE2 .... (后跟多个文件名)
在末行模式下:
输入 next 切换至后一个文件
prev 切换至前一个文件
first 切换至第一个文件
last 切换至最后一个文件
wq all退出所有文件
wall 保存退出
wqall 保存退出
q!all 强制退出
打开多个文件并拆分显示:
vim -o file1 file2...
vim -O 把窗口垂直拆分
定制vim的工作属性:
末行模式下:
:set [no] nu :显示或取消行号
:set [no] ai :
:set [no] ic 忽略大小写
:set [no] hlsearch 高亮显示或取消高亮显示
全局配置位于:/etc/vimrc
手动设置: vim ~/.vimrc
命令行模式下输入set,可以见到常见的属性