您的位置:首页 > 其它

狂拽酷炫编辑器之VIM的使用

2016-08-09 20:47 148 查看
∮vim

vim是一个类似于vi的文本编辑器,不过在vi的基础上增加了很多功能,在早起vim和Emacs编辑器打的很火热,在1999年被linuxwork文本编辑分类的优胜者,而vim屈居第二,但2000年vim赢得了salashdot beanie的最佳开放源代码文本编辑大奖,此时的Eamcs到第二位,vim和Emacs都是非常优秀的文本编辑器。
vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,。
文本编辑器分类:
行编辑器:所行编辑器是指一行一行的来编辑处理的工具,如之前讲过的sed
全屏编辑器:编辑空间占整个屏幕,如nano,vi
vim即vi improved,vi的增强版,vim是模式化的编辑器
vim的工作模式又三种,编辑模式,输入模式,命令扩展模式

vim的使用
打开文件
vim [option]…..filename….
+n:打开文件后,直接将光标定位只指定的行的行首
+/parttern:打开文件后,直接将光标定位都第一个被pattern匹配的行首
vim +filename,直接打开文件,光标在最后一行
vim –b filename filename二进制方式打开文件
vim –d file1 file2:比较多个文件 vim –m filename :只读打开文件,这是不能写入数据。
在使用文件存在时,如果文件不存在,文件被打开并的内容
如果文件不存在,就相当于新建了一个文件。

模式切换
esc键:从输入模式转换到编辑模式
从编辑模式转换到输入模式,可以使用一下命令
i:insert,在光标所在处输入
I:在当前光标所在行的行首输入
a:append,在光标所在处后面输入
A:在当前光标所在行的行尾输入
o:在当前光标所在行的下方打开一个新的行
O:在当前光标所在行的上方打开一个新的行
命令模式——>扩展命令模式

扩展命令模式——>命令模式
esc
锁定和解锁:ctrl+s,ctrl+q

关闭文件
扩展命令模式下推出文本
:q 退出文件
:q! 强制保存退出,丢弃做出的修改
:wq 保存退出
:x 保存退出

命令模式下退出文本
ZZ 保存退出
ZQ 不保存退出

扩展模式
按“:”进入Ex模式
创建一个命令提示符,处于底部的屏幕左侧
命令
w写入磁盘文件
wq保存退出
x 写入并推出
q 退出
q!不存盘退出,即使修改的内容,也不会保存
r filename 读文件内容到当前文件中
:r /etc/issue 将文件内容插入到光标所在的位置

!command 在命令扩展模式下指定命令
:!ls /etc/issue

r!command 将某个命令执行的记过读入到当前文件中
r!cat /etc/issue





命令模式光标跳转
字符间跳转
h:左
l:右
j:下
k:上
记忆小技巧h在哪一排的最左边所以是左,l在最右边就是右,j可以理解成japan,日本在韩国的下边,j就是下,而韩国的首字母是k,韩国在日本上方,k就是上
单词间跳转
w:下一个单词的词首
e:当前或下一个单词的词尾,end最后
b:当前或前一个单词的词首,before
#command:有#指定一次跳转的单词数,比如我想跳转3个词,就是3w

当前页跳转
H:当前页的首部,可以理解成head
M:页中间,middle
L:当前页的底部,lower

行首行尾跳转
^:跳转至行首的第一个非空白字符
0:跳转至行首,绝对行首
$:跳转至行尾

行间移动:
#G:扩展模式下直接指定跳转的行数如 :10跳至第十行
G:跳转至文件内容的最后一行
1G,gg:跳转至文件的第一行

句间移动
“(”:上一句
“)”:下一句

段落间移动:
“{”:上一段
“}”:下一段

命令行模式翻屏操作
翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏

命令模式操作
字符编辑:
x:删除光标处的字符
#x:删除光标处的#个字符
xp:交换光标所在处的字符及其后面字符的位置,也就是后面的一个字符,换到前面的一个字符的位置
~:转换大小写,原本是大写转换成小写,原本是小写,转换成大写

命令替换(replace)
r:替换光标所在处的字符
R:切换成REPLACE模式

删除命令
d:删除命令,可结合光标跳转字符(w,b,e),实现范围删除
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除到下一个单词的词首
de:删除到下一个单词的词尾
db:删除至上一个词的词尾
#command,3dw
dd:删除光标所在的行 3dd
D:从光标处一直删除到行尾,留空行等同于d$

复制命令(yank)
y:复制,跟d类似
y$:从当前位置复制到行尾
y0: 从当前行复制到行首
y^:从当前位置复制到非空白行首
yw:从当前位置复制一个单词词首
ye:从当前位置复制一个单词词尾
yb:从当前位置复制单词的词尾
yy:复制行 3yy
y:复制整行

粘贴命令(paste)
p:缓冲区如果为整行,粘贴当前光标所在行的下面,否则,粘贴至光标所在处的后面
P(大写):缓冲区如果为整行,粘贴当前光标所在行的上面,否则,粘贴至光标所在处的前面

改变命令(change)
c:修改后切换成插入模式
命令模式——>插入模式
c$:从光标的当前位置到行尾的内容删除,用户可新添加内容

c^:从光标的当前位置到行非空白字符行首的内容删除,用户可新添加内容
c0:从光标的当前位置到行绝对行首的内容删除,用户可新添加内容
cb:从光标的当前位置到上个单词的词首删除,用户可新添加内容

ce:从光标处到下个词的词尾删除,用户添加新内容

cw:从光标的当前位置到下个词的词首删除,用户添加新内容

#command
cc:删除当前行并输入新内容 3cc
C:删除当前光标到行尾,并切换成插入模式

命令模式
10"xiaoesc粘贴‘xiao’1o次
y复制,d删除,gU变大写,gu变小写(移动光标才会改变)

扩展模式:地址定界
:start,end
#: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾#,+#: 从左侧#表示的行起始,加上右侧#表示的行数:2,+3 表示2到5行 “.” :当前行
$:最后一行
: .,$-1当前行到倒数第二行
%:全文,相当于1,$
/part1/./part2/
从第一次被part1模式匹配到的行开始,到第一次被part2匹配到的行结束
:/root/,/abc/

#,/part/ 从#行到被模式第一次被part匹配到的行结束
/part/,$ 从第一次被模式匹配到的行到最后一行
使用方式:后跟一个编辑命令
d:删除
y:复制
w /path/to/file 将范围匹配到的行写到指定的文件中
r file:在指定位置插入指定文件的内容

查找
/pattern:从当前光标所在处向文件尾部查找
?pattern:从当前光标所在处向文件首部查找
n:向下翻页
N:向上翻页

查找替换
s:在扩展命令模式下完成查找替换操作
格式: s/要查找的内容/替换的内容/修饰符
要查找的内容:可以使用模式
替换的内容:不能使用模式,但可以使用\1,\2….等后向印象引用符号;还可以使用“&”引用前面查找时找到的整个内容
修饰符:
i:忽略大小写
g:全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问

查找替换中的分隔符/可替换为其他字符,例如
s@/root@/var@g
s#/boot#/#i

撤销更改
u撤销最近的更改
#u:撤销之前多次更改
U:撤销光标落在这行后所有此行的更改
按ctrl –r 重做最后的撤销更改
"."重复前一个操作
"n."重复前一个操作n次

vim寄存器
有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。用a,b,…,z表示,用“寄存器表示,放在数字和命令之间
如:3"tyy 表示复制3行到t寄存器中"tp 表示将t寄存器内容粘贴未指定,将使用无命名寄存器有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享。

编辑二进制文件
以二进制方式打开文件
vim –b /bin/bash
扩展命令模式下,利用xxd命令转换为刻度的十六进制
:%!xxd
编辑二进制文件扩展命令模式下,利用xxd命令转换回二进制保存退出


可视化模式
允许选择地文本
v:面向字符
V:面向行
ctr –v 面向块
可视化键可用于移动键结合使用
w, ), {,方向键等
突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等



多文件模式
vim file1 file2 file3 file4
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:wall保存所有
:qall 退出所有
:wqall 保存退出所有





使用多个窗口
vim –o|-O file1 file2
-o:水平分割
-O:垂直分割
在窗口间切换ctrl+w, 左右键
单个文件窗口分割
ctrl+w,s:split,水平分割
ctrl+w,v:vertical,垂直分割
ctrl+w,q取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall退出





vim配置文件
全局:/etc/vimrc
个人:~/.vimrc

扩展模式:当前vim进程有效
显示行号
set number简写为set nu
取消行号 set nonu





括号成对匹配
set showmatch简写set sm
取消set nosm

自动缩进
启用set ai
取消set noai



高亮搜索
启用: set hlsearch
取消: set nohlsearch



语法高亮
启用:syntax on
取消:syntax off

忽略字符的大小写
启用:set ic
取消:set noic

文件格式
启用 fileformat=unix
不忽略:fileformat=dos

设置文本宽度
:set textwidth=60
:set wrapmargin=10

:help option-list 获取帮助列表
:set or :setall 显示set相关的命令

vim内置帮助
:help
:help topic
vimtutor(执行命令进入帮助文档)

练习
复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
cp /etc/profile /tmp
vim profile
:s@^[[:space:]]@@g'

复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
cp /etc/rc.d/init.d/functions /tmp

vim funtions
:s@^[[space:]]@#&@g'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息