文本编辑器:
行编辑器:sed
全屏编辑器:nano,vi,vim
Vim程序编辑器
Vim可以认为是vi的高级版本
Vi:visual interface 全屏文本编辑器
Vim:vi iMproved 改善的全屏文本编辑器
Vim教程:
Vimtutor
模式化编辑器:
编辑模式:键入命令完成光标移动,文本的复制,移动,删除
输入模式:可以进行任意内容的编辑
末行模式:输入命令决定保存和离开的方式
模式间切换:
Vim打开文件直接进入编辑模式;
编辑模式--à输入模式
输入i,I,a,A,o,O,r,R可进入输入模式(insert mode)
i:从目前光标所在处插入;
I:从目前光标所在行的第一个非空格字符处开始插入;
a:append 从当前光标后追加输入;
A:从当前行的行尾开始插入;
o:从光标所在行的下一行,插入新的一行;
O:从光标所在行的上一行,插入新的一行;
r:只会替换光标所在的那一个字符一次;
R:一直替换光标所在的文字,直到按下ESC键为止
输入模式-à编辑模式
ESC退出输入模式,返回编辑模式
编辑模式-à末行模式
: 由编辑模式进入末行模式
末行模式-à编辑模式
ESC 退出末行模式,返回编辑模式
打开vim
#vim 打开vim程序编辑器
#vim /PATH/TO/SOMEFILE 打开指定文件
+#: #为行号,打开后光标定位到#行行首
+/PATTERN 通过模式来选定光标位置
关闭vim 在末行模式下关闭vim
:q 退出vim
:q! 如果修改过文件,不保存退出,使用 ! 强制退出,不保存
:w 保存编辑的文件
:w! 若文件属性为"只读"时,强制写入文件,最终能不能保存,取决于对该文件的权限
:wq 保存后退出
:wq! 强制保存后退出
:x 保存退出
ZZ 大写ZZ 若文件没有改动,则不保存离开,若文件有改动则保存后退出
:w [filename] 将编辑的文件保存成另一个文件 类似另存为
:r [filename] 在编辑的文件中,读入另一个文件,将filename文件的内容加到光标所在行的后边
:#,# w [filename] 将#行到#行的内容保存成filename文件
光标跳转:编辑模式下
字符间跳转:
h:光标向左移动一个字符
l:光标向右移动一个字符
j:光标向下移动一个字符
k:光标向上移动一个字符
#COMMAND: 跳转指定行数,如 10k 向上10行
行内跳转:
^: 跳转至行首第一个飞空白字符
0: 跳转至绝对行首
$: 跳转至绝对行尾
行间移动
#G: 移动到文件的第#行
1G,gg:移动到文件的第一行
G: 移动到文件的最后一行
句间移动:
):跳转到下一句
(:跳转到前一句
段落间移动
{:跳转到下一段的段首
}:跳转到上一段的段首
编辑命令:
字符编辑命令:
X : 大X为向前删除一个字符,相当于Backspace
x : 小写x向后删除一个字符,相当于del
#x:删除光标所在处向后#个字符
xp:将光标所在处的字符和后边一个字符位置对调
删除命令:
d:
d^ 删除光标所在处到行首的所有字符
d$ 删除光标所在处到行尾的所有字符
d0 删除光标所在处到行首的所有字符
dw,de,db,dG
dd: 删除光标所在行
#COMMAND
注意:删除内容会被vim编辑器保存至缓冲区当中
粘贴命令:p (paste, put)
如果此前复制或者删除的内容不是完整的行:
p 小写:粘贴至当前光标所在处的后面
P 大写:粘贴至当前光标所在处的前面
如果复制的内容是完整行(可以不止一行)
p小写:粘贴之当前光标所在行下方
P大写:粘贴至当前光标所在行上方
复制命令: y, yank
y:
yy: 复制光标所在的那一行
#yy:复制光标所在的向下#行
#COMMAND
y1, y1G, yG, y$, y^, y0, ye, yw, yb
改变命令:c, change 兼具文件编辑和模式转换
c$,c^,c0,cb,
ce,ce,cw
cc: 删除光标所在行,进入插入模式
#COMMAND
撤销此前的编辑工作
u: undo
撤销此前的编辑操作
#u
Ctrl+r 恢复此前的撤销工作
.:重复起一个编辑操作
翻屏操作:
Ctrl+f: 屏幕向下翻一页
Ctrl+b: 屏幕向上翻一页
Ctrl+d:屏幕向下移动半页
Ctrl+u:屏幕向上移动半页
示例:
# vim /tmp/test/test_vim +3
# vim /tmp/test/test_vim +/^a
末行模式:
(1)地址,定界
:start_pos,end_pos
#: 第#行
#,#:从#行到#行
#,+#:从#行到第#+#行
.:当前行
$:组后一行
%: 全文,相当于1,$
/pat1/: 第一次被此模式所匹配到的行;
#,/pat1/:从第#开始,第一次被此模式所匹配到的行
/pat1/,/pat2/:第一次被此模式所匹配到的行 到 第二次被匹配到的行
后边可跟编辑命令:
y,w,r
(2)查找
/PATTERN: 向尾部进行搜索
?PATTERN: 向首部进行搜索
n: 与命令同方向
N: 与命令反方向
(3)查找替换
s:在末行模式下,在地制定界的范围内完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;
\1, \2, ...
&:引用"要找的内容"匹配到的整个内容;
修饰符:
i: 忽略大小写
g: 全局替换
c:提示给用户确认是否需要替换
/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/
分隔符可替换为其它字符:例如@,#等;
多文件模式:
vim FILE1 FILE2 ...
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个vim打开的所有文件
:next 编辑下一个文件
:first 编辑第一个文件
:prev 编辑上一个文件
:last 编辑最后一个文件
:wqall 保存并退出所有打开文件
:q!all 强制退出所有打开文件
多文件窗口分割:
vim -o|-O FILE1 FILE2 ...
Ctrl+w, ARROW(箭头) 切换窗口
单文件窗口分割:
Ctrl+w, s: split, 水平分割
Ctrl+w, v: vertical, 垂直分割
定制vim的某些工作特性:
(1) 行号
显示:set nu
禁用:set nonu
(2) 括号匹配
显示:set sm
禁用:set nosm
(3) 自动缩进:
set ai
set noai
(4) 高亮搜索
set hlsearch
set nohlsearch
(5) 语法着色
syntax on
syntax off
(6) 忽略字符大小写
set ic
set noic
:help 获取帮助
:help SUBJECT
特性设定的永久生效方式:
全局配置文件:/etc/vimrc
用户个人的配置文件:~/.vimrc 默认不存在可以手动创建
# vim ~/.vimrc
1 "这个文件说引号是注释
2 set nu "显示行号
3 set hlsearch "高亮显示
4 set autoindent "自动缩进
5 syntax on "进行语法检测颜色显示
练习:
1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;CentOS: /etc/grub.conf
%s/^[[:space:]]//g
2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;
%s/^\s\+/#&/g
3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
%s@/etc/sysconfig/init@/var/log@g
4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#
%s/^\(#\)\(\s\+\)/\2/g
如有错误,敬请指正!
谢谢!
原文地址:http://rogerwang.blog.51cto.com/5326353/1691971