Linux 系统 vim文本编辑器
vim编辑器:
文本编辑器:
文本:纯文本,ASCIItext;
文本编辑种类:
行编辑器:sed
全屏编辑器:nano 、vi、vim;
图形编辑器:
gedit:一个简单的图形编辑器;
gvim:vim编辑器的图形版本;
vim模式化的编辑器:
基本模式:
命令模式;
输入模式;
末行模式;
vim使用语法:
vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首;
例:vim +10 file
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
例:vim + /root /etc/passwd
+:打开文件后,直接让光标处于最后一行的行首;
例:vim + file
-b:以二进制方式打开文件;
例:vim –b file
-d:多个文件比较,查看是否有差异;
例:vim -d file1 file2……
-m:只读方式打开文件;
例:vim -m file
注:如果vim编辑的文件已存在,文件被打开并显示内容;
如果vim编辑的文件不存在,当第一次编辑存盘保存时创建它;
模式转换:
命令模式—–>输入模式
a:在当前光标位置之后一个字符插入内容;
A:在光标所在行的行尾插入内容;
i:在当前光标位置插入内容;
I:在当前光标所在行的行首插入内容;
o:在光标所在行的后面插入一个新行;
O:在光标所在行的前面插入一个新行;
输入模式——->命令模式
按ESC键即可;
命令模式——->末行模式
按shift +:组合键即可;
:1,10d(末行模式中输入1,10d即可删除10行内容)
末行模式——->命令模式
按ESC键即可;
退出文件编辑:
注:此操作需要切换至末行模式中操作;
:q 只是查看文件内容而未修改可以执行q退出;
:q! 已经修改文件内容却没有保存,可以执行q!强制退出,不保存此前编辑内容;
:wq 保存并退出;
:w 保存 :q 退出
:x 保存并退出,等价于wq;
: w /path/to/somefile 将文件另存为指定的文件路径中;
例: :w /testdir/f1
:r /etc/fstab 将/etc/fstab文件内容读取到当前文件中;
:!command 可以使用命令;
:r!command 将命令查找的内容读取到当前文件中;
命令模式退出:
ZZ :保存退出;
ZQ :不保存退出;
命令模式光标跳转:
字符间跳转:
h:左、 j:下、k:上、l:右
#{h、j、k、l}:跳#个字符;
单词间跳转:
w:跳到下一个单词词首;
e:跳到下一个单词的词尾;
b:跳到当前单词或前一个单词的的词首;
#{w、e、b}跳#个单词;
行内跳转:
^:跳转到行首第一个非空白字符;
0:跳转到绝对行首;
$:跳转到绝对行尾;
行间跳转:
1G或gg:跳转到第一行;
G:跳转到最后一行;
#G:直接跳转到第#行;
句子间跳转:
( :跳到上一句;
) :跳到下一句;
段落间跳转:
{:跳到上一段落;
}:跳到下一段落;
文件内容查找:
/string :按/键可以输入指定的字符串,从当前光标处开始向后进行查找,完成查找内容后可以按N、N键在不同查找结果中选择。
翻屏操作:
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏;
ctrl+u:向文件首部翻半屏;
vim的编辑命令:
删除单个字符命令:
x:删除光标所在处得字符;
#x:删除光标处后#个字符;
xp:交换光标所在处的字符与其后的字符的位置;
替换命令
r:替换光标所在处的字符;(按r键再按想要替换成的字符)
删除命令:
d:删除命令,可结合光标跳转字符操作,实现范围删除;
d$:删除当前光标处当行尾的所有字符;
d^:删除当前光标处到行首的所有字符;
dd:删除光标所在的行;
#dd:删除光标处开始的#行内容;
粘贴命令:
p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则粘贴至当前光标所在处的后方;
P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,否则,则粘贴至当前光标所在处的前方;
复制命令:
y:复制结合光标跳转字符使用,复制跳转范围内的字符;
y$ y^ y0 yw ye yb
yy:复制一整行的内容;
#yy:复制从光标处开始的#行内容;
100 i zheng [ESC] 粘贴zheng100次;
改变命令:
修改结合光标跳转字符使用,修改跳转范围内的字符;
w、e、b、^、$、0
所谓的修改就是先删除,在转换为输入模式;
cc:删除光标所在处的整行而后跳转为输入模式;
#cc:删除光标所在行后的#行内容跳转为输入模式;
vim可视化模式:
v:选中光标走过的字符;
V:选中光标走过的行;
注:经常结合编辑命令d、c、y使用;
撤销编辑:
u:撤销此前的操作;
#u:撤销最近的#次操作;
撤销此前的撤销操作:
ctrl+r
vim的末行模式:
末行模式:内建的命令行接口;
地址定界:
:start_pos[,end_pos]
#:特定的第#行,例如5即第5行;
.:表示当前行;
$:表示最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行;
#,+#:指定范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7 表示从第3行开始后再加7行,一共为8行;
%:表示全文;
/pattern:从光标所在处起始向文件尾部第一次被模式匹配到的行;
/pattern1/,/pattern2/:从光标所在处起始,第一次有pattern1匹配到的行开始,至第一次有pattern2匹配到的行结束之间的所有行;
w /patn/to/somefile:将范围内的文本保存至指定的文件中;
r /path/from/somefile :将指定的文件中的文本读取并插入至指定位置;
文件内容查找:
/pattern:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
/pattern:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:按n键可以移动到下一个查找结果;
N:按N键可以移动到上一个查找结果;
查找并替换:
sub 或 s :末行模式的命令;
使用格式:
s/要查找的内容/替换为的内容/修饰符;
要查找的内容:可以使用正则表达式;
替换为的内容:不能使用正则表达式,但可以引用;
如果“要查找替换的内容”部分在模式中使用分组符号,在“替换为的内容”中使用后向引用;直接引用查找模式匹配到的全部文本;
修饰符:
i:替换时忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换;
分隔符替换:
可以把分隔符替换为其它非常用字符;
例如:s@@@ 或 s###
例:
复制/etc/grub2.cfg文件至/testdir目录中,用查找替换命令删除/testdir/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
:%s@^[[:space:]]\+@@
复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/testdir/functions文件的每个以空白字符开头的行的行首加上#;
:%s@^[[:space:]]@#@
为/testdir/grub2.cfg文件的前三行的行首加上#号;
:1,3s@^@#@
将/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 file3………………..
在文件间切换:
:next 切换到下一个文件;
:prev 切换到上一个文件;
:first 切换至第一个文件;
:lest 切换至最后一个文件;
退出所有文件:
:wqall 保存所有文件并退出;
:wall 保存所有文件;
:qall 退出所有文件;
多文件窗口分隔:
vim [options] file1 file2 file3…………..
-o :水平分隔多个文件;
-O :垂直分隔多个文件;
单个文件多窗口分隔:
命令模式下操作:
ctrl+w ,s split 水平分隔;
ctrl+w ,v vertical垂直分隔;
ctrl+w ,q 取消相邻的窗口;
ctrl+w ,o 取消全部窗口;
:wqall 保存并退出所有;
:wall 保存所有;
:qall 退出所有;
定制vim的工作特性:
注意:在末行模式下的设定,仅对当前vim进程有效;
永久有效设置:
全局:/etc/vimrc
用户个人:~/.vimrc
行号:
显示:set number,简写 set nu
取消显示: set 弄number 简写 set nonu
括号匹配:
匹配:set showmatch 简写 set sm
取消匹配:set noshownmatch 简写 set nosm
启用字符缩进功能:
启用:set ai
禁用:set noai
高亮文本搜索:
启用:set hlsearch
禁用:set nohlsearch
语法高亮:
启用:syntax on
禁用:syntax off
忽略字符大小写
启用:set ic
禁用:set noic
获取帮助:
:help
:help subject
原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/35750