vi
和
vim
区别:
vi :visual interface
vim:vi improved, vim
它们都是多模式编辑器,不同的是
vim
是
vi
的升级版本,它不仅兼容
vi
的所有指令,而且还有一些新的特性在里面。
[root@localhost ~]# which vi
/bin/vi
[root@localhost ~]# which vim
/usr/bin/vim
模式化编辑器:
编辑模式
(
命令模式
)
:
x , dd
输入模式:
x , dd
末行模式:
q!
进入文件让光标处于指定的行
:
Vim +# smb.conf
例子:
[root@localhost ~]# vim +10 smb.conf
(光标在第
10
行)
[root@localhost ~]#
进入文件让光标处于末行
:
Vim + smb.conf
例子:
[root@localhost ~]# vim + smb.conf (
光标在末尾
)
[root@localhost ~]#
模式转换:
编辑模式
-----à
输入模式:
i :
在当前光标所在前面插入。
a :
在光标所在后面插入。
o :
在光标所在新插入一行。
I
:在当前光标所在行行首插入。
A
:在当前光标所在行行尾插入。
O
:在当前光标所在行的上方新增一行插入。
输入模式
------
编辑模式:
ESC
键
编辑模式
-------
末行模式:
: (
冒号
)
退出
vi
:
:q
(没改过的退出)
:q!
(强行不保存退出)
:wq
(保存退出)
:w (
保存不退出
)
:w! (
强行保存不退出,只有
root
可以
)
ZZ (
大写
ZZ,
保存退出
)
光标的跳转:
h :
光标向左。
(5h
:向左
5
个字符移动
)
l :
光标向右。
(8l
:向右
8
个字符移动,小写
L
,不是
I)
j :
光标向下一行跳转。
(6j
:移到下
6
行
)
k :
光标向上一行跳转。
(7k
:向上移动
7
行
)
在单词间跳转:
w :
下一个单词的词首。
#w :
一下跳几个单词。
(
#
代表数字,
3w :
跳
3
个单词。)
e :
跳到下一个单词的词尾。
b :
跳到前一个单词的词首。
在行内跳到行尾,行首:
^
行首(跳到这一行第一个字符行首。)
0
行首 (跳到绝对行首,空白也算行首。)
$
行尾
在行间跳转:
gg
:跳到文档的第一行。
#G (1 G
,跳到文档第一行,
5G
:跳到第
5
行。
)
G :
跳到文档最后一行。
在末行模式下:
:#
(如
:10
跳到文档第
10
行。)
翻屏操作:
Ctrl+f :
向后一屏。
Ctrl+b :
向前一屏。
Ctrl+d :
向后半屏。
Ctrl+u :
向前半屏。
删除字符:
x :
删除光标所在字符。
#x : 3x
删除光标所在处向后的
3
个字符。
X :
删除光标所在前一个字符。
dd :
删除整行。
dw :
删除当前光标所在的字符。
(3dw
:删除光标所在处向后的
3
个字符。
)
d$ :
删除当前光标到行尾的所有字符。
(
包括光标所在字符。
)
d0 :
删除当前光标到行首的所有字符。
(不包括光标所在字符。)
#dd : 3dd (
删除
3
行
)
。
删除
10
行到第
20
行:(需要在末行模式下完成。
:
)
:10,20d (
冒号
10
逗号
20d)
.
:表示当前行。
$
:表示最后一行。
+#
:表示向下的
#
行。
例如:
删除当前光标所在行到最后一行:
:.,$d (
冒号 点 逗号 美元号
d)
:.,11d (
删除当前光标所在行到第
11
行。
)
:20+3d (
删除
20
行之后加上
3
行,一共删除
4
行。
)
粘贴:
p :
粘贴,如果是删除或复制的是整行,在当前光标所在行下方粘贴。
如果是删除单词或行的部分,在当前光标所在处后方粘贴。
P :
(大写
P
)如果是删除或复制的是整行,在当前光标所在行上方粘贴。
如果是删除单词或行的部分,在当前光标所在处前方粘贴。
复制:
(
用法和
d
删除命令一样
)
yy :
复制整行。
yw :
复制当前光标所在的字符。
(3yw
:复制光标所在处向后的
3
个字符。
)
y$ :
复制当前光标到行尾的所有字符。
(
包括光标所在字符。
)
y0 :
复制当前光标到行首的所有字符。
(不包括光标所在字符。)
#yy : 3yy (
复制
3
行
)
。
撤销编辑操作:
u :
撤销上一次编辑操作。
Ctrl+r :
撤销最后的撤销操作。
(u
撤销撤销撤多了,按
ctrl+r
还原最后一次撤销。
)
可视化模式:
相当于
word
中用鼠标按住左键拖一大片删除或复制的方式:
v :
按字符选取,左右键选择到哪里,按
d
删除或按
y
复制。
V:
按行选取。
搜索:
/keyword
:从上到下查找。
?keyword
:从下到上查找。
n
键:查到下一个。
N
:往回查找。
查找并替换:同
sed
应用
在末行模式下使用
s
命令
:定界
s/
查找的内容
/
替换成的内容
/gi
查找的内容:支持正则表达式。
替换成的内容:不支持正则表达式,但可使用前向引用。
例子:
:1,20s/uname/UNAME/gi (1
到
20
行,查找
uname
并替换
UNAME,gi
全局
)
:.,$-1s/5/999999/g (
从当前行到最后一行减去
1
行中的
5
替换成
999999
全局替换
)
:%s/zhang1/zhangdawei/g (
替换每一行中
zhang1
成为
zhangdawei
,
:
百分号
s)
修饰符:
g :
全局替换。
i :
查找时忽略字符大小写
如何使用
vi
打开多个文件:
[root@localhost ~]# vi rc.sysinit inittab
此时默认打开第一个文件
rc.sysinit
,可以按
yy
复制一行。
如何把在
rc.sysinit
里面复制的内容粘贴到
inittab
中:在末行模式下输入 :
next
可以打开多个文件:
[root@localhost ~]# vi rc.sysinit inittab abc
文件的切换说明:
在末行模式下输入
:
next (
表示切换下一个文件
)
:
prev (
表示切换前一个文件
)
:
last (
表示切换至最后一个文件
)
:
first (
表示切换至第一个文件
)
退出:
:qa (
全部退出
)
分屏显示一个文件:
按
ctrl+w
,松开后按
s
键 :水平拆分窗口,当前光标在上一屏。把光标移动到下屏按
ctrl+w
松开后按方向键下。
ctrl+w
松开方向键上回到上屏。
或:
水平切割:
:split
:split xxx
(要打开的文件名)
:new
(在新窗口创建文件)
按
ctrl+w
,松开后按
v
键 :垂直拆分窗口。
拆分后出去:
:
qa (
全部退出
)
分窗口编辑多个文件:
-o
:
(
小
o
,水平分割显示
)
-O
:
(
大
o
,垂直分割显示
)
[root@en testold]# vim -o inittab grub.conf CentOS-Base.repo (
会分三屏显示,上中下,
ctrl+w
上下键操作
)
如何将另外一个文件的内容填充在当前文件中:
:r
文件路径
/
文件名
[root@localhost ~]# vim aa (
打开
aa
文件,把
b1
文件内容添加到
aa
文件中
)
:r /root/testold/b1 (
注意:添加
aa
文件中位置是光标所在行的下面行开始
)
在
vi
模式下进行
shell
命令操作:
假如需要输入一个路径,但是忘了详细路径,不用退出
vi
,查看路径的方法:
:!
执行命令
(
末行模式冒号叹号输入命令
)
[root@localhost ~]# vim aa
:!pwd
/root/testold
Press ENTER or type command to continue (
按回车继续
)
显示行号和关闭行号:(只在当前
vi
编辑有效)
显示行号:
(
只是显示行号,和文件内容无关
)
:set nu
关闭显示行号:
:set nonu
设定自动缩进:
:set ai
:set noai (
取消自动缩进
)
[root@localhost ~]# vi aa
zhe shi shou hang. (
末行模式
:set ai
,下面输入光标会自动缩进
)
zhangdawei
dwzhang
zhang1
zhang2 (
末行模式
:set noai
退出缩进
)
zhe shi suo jin!
当用
vim
编辑文件时,用到搜索时,搜索到的字符串会有一片颜色高亮显示,如何取消颜色高亮显示:
[root@localhost ~]# vim aa
:set hlsearch (
搜索到的颜色显示
)
:set nohlsearch (
取消搜索到的颜色显示
)
用
vim
编辑脚本时,会有语法高亮,有的文件会有很多种颜色,如何关闭语法高亮?
末行模式下:
:syntax off (
关闭语法高亮
)
:syntax on (
打开语法高亮
)
用
:set
更改只是在本文件编辑时有效,关闭后再打开就无效,如何长期有效?需要在
vim
配置文件中更改:
vim
配置文件有
2
个:
(
注意:是
vim
不是
vi
,需要用
vim
打开
)
1. /etc/vimrc (
全局配置文件,对所有用户有效
)
[root@localhost ~]# ll /etc/vimrc
-rw-r--r--. 1 root root 1962 Feb 17 2012 /etc/vimrc
如何让文件打开就有行号:
[root@localhost ~]# vi /etc/vimrc (
全局有效
)
set nu (
随便找个位置加入
)
2. /root/.vimrc (
用户家目录下
vim
配置文件,如没有可自己添加
)
[root@localhost ~]# vim .vimrc (
注意:一定在家目录下建立并且需要是隐藏文件
)
set nu
[root@localhost ~]# (
用
vi
打开无效
)
vim
学习文件,导师,如何学习
vim
说明文件:
[root@localhost ~]# vimtutor
vi
错误问题:
当正编辑文件时,非法退出(断电或者没有
:q
末行模式正确退出),此时
vi
进程还在运行,下次打开该文件时会显示:
E325: ATTENTION
Found a swap file by the name ".CentOS-Base.repo.swp"
owned by: root dated: Fri Nov 14 09:51:03 2014
file name: ~root/testold/CentOS-Base.repo
modified: YES
user name: root host name: en.com
process ID: 3541
While opening file "CentOS-Base.repo"
dated: Fri Nov 14 08:54:56 2014
……………………………………………………….
…………………………………………………………
如果出现上述问题,就会在这个文件目录下有相对应的隐形文件
.CentOS-Base.repo.swp
存在:
[root@localhost ~]# ls –a
CentOS-Base.repo .CentOS-Base.repo.swp inittab .inittab.swp
只要有
.swp
这样的文件,就代表上次非法退出的,每次打开该文件就会有警告的。
除去打开文件警告信息:
删除
.swp
文件:
(
前提要确定文件内容
)
[root@en testold]# rm -rf .inittab.swp
再去编辑就不会出现警告信息了!
注意:
此时打开的文件为编辑过没有保存的时期,如何恢复到编辑后非法退出的时期文件:用
-r
[root@localhost ~]# vim -r aa
[root@localhost ~]#
如果误删除了文件
aa
,但是有
.aa.swp
隐藏文件在,如何恢复误删除的文件:
[root@localhost ~]# vim -r aa
:wq (
需要保存
)
本文出自 “
11628205
” 博客,请务必保留此出处
http://11638205.blog.51cto.com/11628205/1863269