vim编辑器:
文本编辑器:文本,纯文本,ASCII text;Unicode;
文本编辑种类:
行编辑器:sed
全屏编辑器: nano,vi
vi:Visual Interface
vim:Vi Improved
vim: 模式化的编辑器
基本模式:
编辑模式,命令模式
一般模式;
末行模式:
内置的命令行接口;
打开文件:
vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首;
+/PATTERN: 打开文件后,直接让光标处于第一个被PATTERN匹配到的字符串的位置;
-b 二进制方式打开文件
-d 打开多个文件
-m 只读方式打开文件 无法修改
-e 直接进入末行模式;
编辑模式:
i: insert,在光标所在处输入;
a: append,在光标所在处后方输入;
o: 在光标所在处的下方打开一个新行;
I: 在光标所在行的行首输入;
A: 在光标所在行的行尾输入;
O: 在光标所在处的上方打开一个新行;
打开之后默认是一般模式 | 命令模式
插入模式 | 编辑模式
末行模式 | 扩展模式(extend )| 命令行模式
模式转换:
一般模式 –> 编辑模式:
i , I ,a ,A ,o, O; 用的比较多的是 i ,o, O
编辑模式 –> 一般模式: Esc
一般模式 –> 末行模式
: ? / 其中: / 用的比较多的
末行模式:
:ZZ 保存并退出
:q 退出
:q! 强制退出,不保存修改的内容;
:wq 保存并退出;
:w :q
: x 保存并退出
: w /PATH/TO/SOMEFILE 另存为/PATH/TO/SOMEFILE
:r filename 读入一个文件写到当前文件中;
:!CMD 在末行模式下执行一个命令;
: r!CMD 将命令的执行结果写到当前文件中;
光标跳转:
字符间跳转
h: 左 l:右
k: 上 j:下
#COMMAND: 跳转由#指定的个数的字符;
单词间跳转:
w:下一个单词的词首
b: 当前或前一个单词的词首
e: 当前或后一个单词的词尾
#COMMAND: 跳转由#指定的个数的单词;
行首行尾跳转:
^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾
行间跳转:
#G:跳转至指定的第#行
1G,gg:跳转至第一行
G: 最后一行
句间跳转
) 下一句 ( 前一句
段间跳转
{ 前一段 } 后一段
页间跳转
H: 页首
M: 页中间
L: 页底
翻屏:
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
Enter: 按行向后翻屏
vim的编辑命令:
字符编辑:
x: 删除光标所在处的字符
#x: 删除光标所在处起始的#个字符
xp:交换光标所在处的字符与其后面的字符的位置
替换命令:
R:进入替换模式,替换完之后按 esc键退出;
r: 替换光标所在处的字符
r CHAR
删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除;
d$: 删除光标处到行尾
d^,d0:删除光标处到行首
dw,de: 删除一个单词
x: 多按几次
dd: 删除光标所在当前行
#dd: 删除光标所在处的行起始的共#行;
d1G: 删除光标到第一行的数据;
dG: 删除光标到最后一行的数据;
二者结合可以删除整个文件里面的内容
注意:删除文件全部内容,先跳到最后一行:G;然后执行d1G;
粘贴命令(p,put,paste):
p: 缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
P: 缓冲区的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
复制命令(y,yank):
y: 复制,工作行为相似于PC命令
y$: 复制光标处到行尾的行;
y0,y^: 复制光标到行首的行;
注意:空白字符和非空白字符的区别
ye,yw: 复制单个字符
#COMMAND
yy:复制一整行
#yy:复制#行
改变命令(change,c):
c: 相当于执行了x然后再执行i 进入编辑操作;
c$: 删除光标处到行尾的内容 然后进入编辑模式;
c^,c0: 删除光标处到行首的内容,删完进入编辑模式;
cb,ce,cw: 删除一个单词之后进入编辑模式;
cc: 删除当前行之后直接进入编辑模式;
#cc;
其它编辑操作:
可视化模式:
v: 按字符选定
V: 按行选定
选择之后可以结合之前的yy复制,dd删除进行操作,替换等等;
撤销(undo)操作:
u: 撤销此前的操作
#u:撤销此前的#个操作
撤销此前的撤销:
Ctrl+r
.: 重复执行前一个编辑操作
vim 末行模式:
内建的命令行接口
(1)地址定界:
:start_pos[,end_pos]
#:特定的第#行,例如:5即第5行
.: 当前行
$:最后一行
#,#: 指定行范围,左侧为起始行,右侧为结束行;
#,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
.$-1
1,$
%:全文
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
/first/,$
/pat1/,/pat2/: 从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由 pat2匹配到的行结束之间的所有行;
可同编辑命令一同使用,实现编辑操作:
d;y; c
w /PATH/TO/SOMEFILE: 将范围内的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE: 将指定的文件中的文本读取并插入至指定位置;
(2) 查找:
/PATTERN: 从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN: 从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n: 下一个, 与命令方向相同
N: 上一个, 与命令方向相反
(3) 查找并替换
s: 末行模式的命令,使用格式
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但可以引用
如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用; 直接引用查找模式匹配到的
修饰符:
i: 忽略大小写;
g: 全局替换,意味着一行中如果匹配到多次,则均替换
可把分隔符替换为其它非常用字符;
s@@@
s###
示例:1, 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首空白字符;
~]# %s@^[[:space:]]\+@@
2.复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加#;
~]# %s@^[[:space:]]\+[^[:space:]]@#&g
3.将/etc/yum.repos.d/Centos-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;
~]# %s@\(enabled\|gpgcheck\)=0@\1=1@g
vim 的多文件功能
vim FILE1 FILE2 …
大文件间切换:
: next 下一个
:prev 上一个
: first 第一个
:last 最后一个
退出所有文件:
:wqall 保存所有文件并退出
:wall
: qall
多窗口:
-o:水平分割窗口
-O:垂直分割窗口
在窗口间切换:Ctrl+w,ARROW
注意:单个文件也可以分割为多个窗口进行查看
Ctrl+w,s 水平分割窗口
Ctrl+w,v 垂直分割窗口
定制vim的的工作特性
注意:在末行模式下的设定,仅对当前vim进程有效
永久有效:
全局: /etc/vimrc
用户个人: ~/.vimrc
1. 行号
显示:set number, 简写为set nu
取消显示: set nonomber(set nu)
2. 括号匹配高亮
匹配:set showmatch(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
vimtutor教程详解vim编辑
原创文章,作者:MFX,如若转载,请注明出处:http://www.178linux.com/73043
评论列表(1条)
主要介绍了vim编辑器的快捷方式与详细用法 ,内容介绍的很详细,排版也很好,继续努力!!