vim使用:
使用vi和vim的三种主要模式 : 命令模式,插入模式,扩展模式
扩展模式:
w:写入磁盘文件
wq:写入并退出
x:写入并退出
q:退出
q!不存盘退出,即使更改都将丢失
r filename:读文件内容到当前文件中
w filenane: 将当前文件内容写入到另一个文件中
!command:在当前界面执行命令
r!command:读取命令执行结果到文件中来。
v
移动光标,进入插入模式 v
i:当前位置插入
I:当前光标所在行行首输入
a:在当前光标所在处后面输入
A:在当前光标所在行的行尾输入
o:当前光标所在行的下方打开一个新的行
O:当前光标所在行的上方打开一个新的行
光标在单词间跳转:
w:跳转到下一个单词的词首
e:跳转到当前单词的词尾或下一个单词的词尾
b:跳转到当前单词的词首或前一个单词的词首
当前页面跳转:
H:页首的行首
M:页面中间行首
L:页面尾部行首
当前行跳转
0:跳转至当前行的行首
^:跳转至当前行的非空字符行首
$:跳转至行尾
行间移动:
数字+G:跳转至数字指定行
G:跳转至最后一行的行首
1G或者gg:跳转至第一行行首
句间移动:
):下一句
(:上一句
段落间移动:
}:下一段
{:上一段
翻屏:
ctrl f:向前翻一屏
ctrl+b:向之前翻一屏
crtl+d:向下翻半屏
ctrl+u:向上翻半屏
关闭文件:
ZZ:命令模式下下保存退出
ZQ:不保存退出
命令模式下的字符编辑:
x:删除字符
#x:删除光标所在处的#个字符,包括他本身
xp:交换光标所在处的字符及其后面字符的位置
~:在当前光标所在处转换大小写
替换字符:
r:替换光标所在处的字符
-R:进入替换模式,一个个的替换
删除操作:
d:删除命令,结合光标跳转字符实现范围删除
d$:删除至行尾(不包括光标所在处的字母)
d^:删除至非空行首(不包括光标所在处的字母)
d0:删除至行首(不包括光标所在处的字母)
dw:删除至下一个单词的词首(都包括光标所在位置的字母)
de:删除至下一个单词的词尾
db:删除至前一个单词的词首或者当前单词的词首
dd删除光标所在行
D:从当前光标删除至行尾。(不包括光标所在处的字母)
:wq:保存退出
:q 不保存退出
x:保存退出
复制文本
y:复制,与命令d类似(都包括复制光标所在位置的字母)
y0:复制到行首(不包括光标所在处)
y^:复制到非空行首(不包括光标所在处的字母)
y$:复制到行尾(不包括光标所在处的行尾)
yy:复制当前行
yw:复制当前位置到下一个单词词首(复制包括光标当前所在处的字母)
ye:复制当前位置到下一个单词词尾 (复制包括光标当前所在处的字母)
yb:复制当前位置到当前单词词首或上一个单词的词首(复制包括光标当前所在处的字母)
粘贴:
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的前面。
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则粘贴至当前光标所在处的前面。
c与d的区别在于c可以删除后立刻进入插入模式。
地址定界 :用于确定搜索范围或者替换范围
start_pos,end_pos #: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数
:2,+3 表示2到5行
.: 当前行
$: 最后一行
.,$-1 当前行到倒数第二行
%:全文, 相当于1,$
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被 pat2匹配到的行结束 #,/pat/ /pat/,$ v 使用方式:后跟一个编辑命令
d 删除
y 复制
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容
例如:1,/^U/dv
撤销改变 v
vu撤销最近的更改 v
#u撤销之前多次更改 v
U 撤消光标落在这行后所有此行的更改 v
按Ctrl – r重做最后的“撤消”更改 v
. 重复前一个操作 v
n.重复前一个操作n次
搜索文档
查找 /PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向v
替换:
s: 在扩展模式下完成查找替换操作
格式:
s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, … 等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问 v
查找替换中的分隔符/可替换为其它字符,例如
%s@/etc@/var@g
%s#/boot#/#i
第一步:定边界
第二步:s功能替换
第三步:查找的内容用正则匹配,分隔符为@,#
第四步:替换的内容可以引用,不能用正则
第五步:参数,g或者i,c询问是否覆盖
vim寄存器
有26个命名寄存器和1个无命名寄存器,常存放不同的 剪贴版内容,可以不同会话间共享。 v
用a,b,…,z表示,用“寄存器表示,放在数字和命令之间
如:
3"tyy 表示复制3行到t寄存器中
"tp 表示将t寄存器内容粘贴 v
未指定,将使用无命名寄存器 v
有10个数字寄存器,用0,1,…,9表示,0存放最近复 制内容,1存放最近删除内容。当新的文本变更和删除 时,1转存到2,2转存到3,以此类推。数字寄存器不能 在不同会话间共享。 v
可视化和多窗口 v
允许选择的文本块
v 面向字符
V 面向行 ctrl-v 面向块 v
可视化键可用于与移动键结合使用:
w, ) , } ,箭头等 v
突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等。这就是可视化存在的最大意义。
vim FILE1 FILE2 FILE3 …
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall
定制vim的工作特性:
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效 v
(1) 行号 显示:set number, 简写为set nu 取消显示:set nonumber, 简写为set nonu v
(2) 括号成对匹配 匹配:set showmatch, 简写为set sm 取消:set nosm
(3) 自动缩进 启用:set ai 禁用:set noai v
(4) 高亮搜索 启用:set hlsearch 禁用:set nohlsearch v
(5) 语法高亮 启用:syntax on 禁用:syntax off v
(6) 忽略字符的大小写 启用:set ic 不忽略:set noic
(7) 文件格式 启用:fileformat=unix 不忽略: fileformat=dos v
(8) 设置文本宽度 :set textwidth=65 (vim only) :set wrapmargin=15
20160808作业:
4、如何设置tab缩进为4个字符?
在家目录下创建~/vimrc文件,添加参数tabstop=4.
5、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
cp -a /etc/rc.d/init.d/functions /tmp
vim /tmp/functions
%s@/etc/sysconfig@/var/log@g
6、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;
vim /tmp/functions
:%s@^#\([[:space:]]\+\)@\1@
原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/33709