【vi】与【vim】编辑器详解
2016-04-12 17:40
113 查看
【vi】
vi:Visual Interface
vim:VI iMproved
全屏编辑器,模式化编辑器
vim模式:
编辑模式(命令模式)
输入模式
末行模式
vim 默认处于编辑模式
模式转换:
编辑--》输入
【i】:在当前光标所在字符的前面,转为输入模式
【a】:在当前光标所在字符的后面,转换为输入模式
【o】:在当前光标所在行的下方,新建一行,并转换为输入模式:
【I】:在当前光标所在行的行首,转换为输入模式
【A】:在当前光标所在行的行尾,转换为输入模式
【O】:在当前光标所在行的上方,新建一行,并转换为输入模式;
输入---》编辑:
ESC按键
编辑--》末行
【:】 即可
末行--》编辑:
ESC按键
注意:输入模式和末行模式彼此之间不能直接转换
一、打开文件
# vim /path/to/somefile 如果somefile文件存在,则是打开该文件,如果不存在则是创建该文件进行编辑。
vim +# :打开文件,并定位于第#行
vim + :打开文件,定位最后一行
vim +/PATTERN :打开文件,定位第一次被PATTERN(模式)匹配到的行的行首
二、关闭文件
1、末行模式关闭文件
【:q】 退出
【:wq】保存退出===》【:x】
【:q!】不保存退出
【:w】保存
【:w!】强行保存
2、编辑模式下退出
【ZZ】保存退出
三、移动光标(编辑模式)
1、逐字符移动:
h:左
l:右
j:向下
k:向上
#h:移动#个字符
2、以单词为单位进行移动
w:移至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
#w:调至#个单词的词首
...
3、行内跳转:
0:绝对行首
^:行首的第一个非空白字符
&:绝对行尾
4、行间跳转
#G:跳转至第#行
G:跳转至最后一行
在末行模式下,直接给出行号即可跳转
四、翻屏
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半瓶
Ctrl+u:向上翻半瓶
五、删除单个字符
【x】:删除光标所在处的单个字符
【#x】:删除光标所在处及向后的共#个字符
六、删除命令:d
d命令跟跳转命令组合使
【#d跳转符】:删除跳转符所指定 范围的#个
【#dw】【#de】 【#db】
【dd】删除当前光标所在行
【#dd】删除包括当前光标所在汉在内的#行
末行模式下:
StartADD,EndADDd
【.】表示当前行
【$】最后一行
【+#】向下的#行
七、粘贴命令p
【p】如果删除或者复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
【P】如果删除或者复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面
八、复制命令 y
用法同d命令
九、修改,先删除内容,再转换为输入模式
【c】:用法同d命令
十、替换:r
【R】:进入替换模式
十一、撤销编辑操作
【u】撤销前一次的编辑操作,(连续u可以撤销此前的n次编辑操作,一般缓存只保存最近50次编辑操作)
撤销最近一次撤销操作(还原最近一次的撤销操作):Ctrl+r
十二、重复前一次编辑操作
【.】重复前一次的编辑操作
十三、可视化模式
【v】按字符选取
【V】按矩形块选取
十四、查找
/PATTERN 从文件首部开始查找安装PATTERN(模式)查找
?PATTERN 从文件尾部开始查找安装PATTERN(模式)查找
n
N
十五、查找并替换
在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi
1,$表示全文可以使用%代替
例如:将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum
%s@ftp:\/\/instructor\.example\.om\/pub@http:\/172.16.0.1\/yum@g
十六、使用vim编辑多个文件
vim FILE1 FILE2 FILE3
【:next】切换至下一个文件
【:prev】切换至前一个文件
【:last】切换至最后一个文件
【:first】切换至第一个文件
退出
【:q】退出当前文件
【:qa】退出全部文件
十七、分屏显示一个文件
Ctrl+w,s(按Ctrl+w按完后再按s按键):水平拆分窗口
Ctrl+w,v垂直拆分窗口
在窗口切换光标:
Ctrl+w,ARROW
:qa关闭所有窗口
十八、分窗口显示多个文件
vim -o :水平分割显示
vim -O :垂直分割显示
十九、将当前文件中部分内容另存为另外一个文件
末行模式下使用w命令
【:w】
:ADDR1,ADDR2w /path/to/somewhere
二十、将另外一个文件的内容填充在当前文件中
:r /path/to/somefile
二十一、跟shell交互
:! COMMAND
二十二、高级话题
1、显示或取消行号
:set number //显示行号
:set nu //显示行号
:set nonu //关闭行号显示
2、显示忽略或区分字符大小写
:set ignorecase
:set ic //忽略大小写
:set noignorecase //不忽略大小写
:set noic
3、设定自动缩进
:set autoindent //设定自动缩进
:set ai //设定自动缩进
:set noai //取消...
4、查找到的文本高亮显示或取消
:set hlsearch //设置高亮显示
:set nohlsearch //取消高亮显示
5、语法高亮
:syntax on //开启语法高亮显示
:syntax off //关闭语法高亮显示
二十三、配置文件
vim的配置文件在
/etc/vimrc
~/.vimrc
-----------------------------------------------------附加
【vi】
命令:vi 文件名;对文件可以进行编辑
# vi filename //打开或新建文件,并将光标置于第一行首
# vi n filename //打开文件,并将光标置于第n行首
# vi /pattern filename //打开文件,并将光标置于第一个与pattern匹配的串处
# vi -r filename //在上次正使用vi编辑时发生系统崩溃,恢复filename
# vi filename....filename//打开多个文件,依次编辑
--------------------------------------------------------------------------------------------
保存命令
按ESC键 跳到命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
之后,回车,ok!
-------------------------------------------------------------------------------------------------
编辑模式中常用命令
x //删除当前字符
dd //删除当前行
u //恢复前一步操作
p //复制之前删除的行
----------------------------------------------------------------------------------------------
编辑模式中其他命令:
h //光标左移一个字符
l //光标右移一个字符
space //光标右移一个字符
Backspace //光标左移一个字符
k或Ctrl p //光标上移一行
j或Ctrl n //光标下移一行
Enter //光标下移一行
w或W //光标右移一个字至字首
b或B //光标左移一个字至字首
e或E //光标右移一个字至字尾
) //光标移至句尾
( //光标移至句首
} //光标移至段落开头
{ //光标移至段落结尾
nG //光标移至第n行首
n //光标下移n行
n- //光标上移n行
n$ //光标移至第n行尾
H //光标移至屏幕顶行
M //光标移至屏幕中间行
L //光标移至屏幕行
0 //(注意是数字零)光标移至当前行首
$ //光标移至当前行尾
------------------------------------------------------------------------------------
屏幕翻滚类命令
Ctrl u:向文件首翻半屏
Ctrl d:向文件尾翻半屏
Ctrl f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部
------------------------------------------------------------------------------------
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
-------------------------------------------------------------------------------------
vi:Visual Interface
vim:VI iMproved
全屏编辑器,模式化编辑器
vim模式:
编辑模式(命令模式)
输入模式
末行模式
vim 默认处于编辑模式
模式转换:
编辑--》输入
【i】:在当前光标所在字符的前面,转为输入模式
【a】:在当前光标所在字符的后面,转换为输入模式
【o】:在当前光标所在行的下方,新建一行,并转换为输入模式:
【I】:在当前光标所在行的行首,转换为输入模式
【A】:在当前光标所在行的行尾,转换为输入模式
【O】:在当前光标所在行的上方,新建一行,并转换为输入模式;
输入---》编辑:
ESC按键
编辑--》末行
【:】 即可
末行--》编辑:
ESC按键
注意:输入模式和末行模式彼此之间不能直接转换
一、打开文件
# vim /path/to/somefile 如果somefile文件存在,则是打开该文件,如果不存在则是创建该文件进行编辑。
vim +# :打开文件,并定位于第#行
vim + :打开文件,定位最后一行
vim +/PATTERN :打开文件,定位第一次被PATTERN(模式)匹配到的行的行首
二、关闭文件
1、末行模式关闭文件
【:q】 退出
【:wq】保存退出===》【:x】
【:q!】不保存退出
【:w】保存
【:w!】强行保存
2、编辑模式下退出
【ZZ】保存退出
三、移动光标(编辑模式)
1、逐字符移动:
h:左
l:右
j:向下
k:向上
#h:移动#个字符
2、以单词为单位进行移动
w:移至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
#w:调至#个单词的词首
...
3、行内跳转:
0:绝对行首
^:行首的第一个非空白字符
&:绝对行尾
4、行间跳转
#G:跳转至第#行
G:跳转至最后一行
在末行模式下,直接给出行号即可跳转
四、翻屏
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半瓶
Ctrl+u:向上翻半瓶
五、删除单个字符
【x】:删除光标所在处的单个字符
【#x】:删除光标所在处及向后的共#个字符
六、删除命令:d
d命令跟跳转命令组合使
【#d跳转符】:删除跳转符所指定 范围的#个
【#dw】【#de】 【#db】
【dd】删除当前光标所在行
【#dd】删除包括当前光标所在汉在内的#行
末行模式下:
StartADD,EndADDd
【.】表示当前行
【$】最后一行
【+#】向下的#行
七、粘贴命令p
【p】如果删除或者复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
【P】如果删除或者复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面
八、复制命令 y
用法同d命令
九、修改,先删除内容,再转换为输入模式
【c】:用法同d命令
十、替换:r
【R】:进入替换模式
十一、撤销编辑操作
【u】撤销前一次的编辑操作,(连续u可以撤销此前的n次编辑操作,一般缓存只保存最近50次编辑操作)
撤销最近一次撤销操作(还原最近一次的撤销操作):Ctrl+r
十二、重复前一次编辑操作
【.】重复前一次的编辑操作
十三、可视化模式
【v】按字符选取
【V】按矩形块选取
十四、查找
/PATTERN 从文件首部开始查找安装PATTERN(模式)查找
?PATTERN 从文件尾部开始查找安装PATTERN(模式)查找
n
N
十五、查找并替换
在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi
1,$表示全文可以使用%代替
例如:将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum
%s@ftp:\/\/instructor\.example\.om\/pub@http:\/172.16.0.1\/yum@g
十六、使用vim编辑多个文件
vim FILE1 FILE2 FILE3
【:next】切换至下一个文件
【:prev】切换至前一个文件
【:last】切换至最后一个文件
【:first】切换至第一个文件
退出
【:q】退出当前文件
【:qa】退出全部文件
十七、分屏显示一个文件
Ctrl+w,s(按Ctrl+w按完后再按s按键):水平拆分窗口
Ctrl+w,v垂直拆分窗口
在窗口切换光标:
Ctrl+w,ARROW
:qa关闭所有窗口
十八、分窗口显示多个文件
vim -o :水平分割显示
vim -O :垂直分割显示
十九、将当前文件中部分内容另存为另外一个文件
末行模式下使用w命令
【:w】
:ADDR1,ADDR2w /path/to/somewhere
二十、将另外一个文件的内容填充在当前文件中
:r /path/to/somefile
二十一、跟shell交互
:! COMMAND
二十二、高级话题
1、显示或取消行号
:set number //显示行号
:set nu //显示行号
:set nonu //关闭行号显示
2、显示忽略或区分字符大小写
:set ignorecase
:set ic //忽略大小写
:set noignorecase //不忽略大小写
:set noic
3、设定自动缩进
:set autoindent //设定自动缩进
:set ai //设定自动缩进
:set noai //取消...
4、查找到的文本高亮显示或取消
:set hlsearch //设置高亮显示
:set nohlsearch //取消高亮显示
5、语法高亮
:syntax on //开启语法高亮显示
:syntax off //关闭语法高亮显示
二十三、配置文件
vim的配置文件在
/etc/vimrc
~/.vimrc
-----------------------------------------------------附加
【vi】
命令:vi 文件名;对文件可以进行编辑
# vi filename //打开或新建文件,并将光标置于第一行首
# vi n filename //打开文件,并将光标置于第n行首
# vi /pattern filename //打开文件,并将光标置于第一个与pattern匹配的串处
# vi -r filename //在上次正使用vi编辑时发生系统崩溃,恢复filename
# vi filename....filename//打开多个文件,依次编辑
--------------------------------------------------------------------------------------------
保存命令
按ESC键 跳到命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
之后,回车,ok!
-------------------------------------------------------------------------------------------------
编辑模式中常用命令
x //删除当前字符
dd //删除当前行
u //恢复前一步操作
p //复制之前删除的行
----------------------------------------------------------------------------------------------
编辑模式中其他命令:
h //光标左移一个字符
l //光标右移一个字符
space //光标右移一个字符
Backspace //光标左移一个字符
k或Ctrl p //光标上移一行
j或Ctrl n //光标下移一行
Enter //光标下移一行
w或W //光标右移一个字至字首
b或B //光标左移一个字至字首
e或E //光标右移一个字至字尾
) //光标移至句尾
( //光标移至句首
} //光标移至段落开头
{ //光标移至段落结尾
nG //光标移至第n行首
n //光标下移n行
n- //光标上移n行
n$ //光标移至第n行尾
H //光标移至屏幕顶行
M //光标移至屏幕中间行
L //光标移至屏幕行
0 //(注意是数字零)光标移至当前行首
$ //光标移至当前行尾
------------------------------------------------------------------------------------
屏幕翻滚类命令
Ctrl u:向文件首翻半屏
Ctrl d:向文件尾翻半屏
Ctrl f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部
------------------------------------------------------------------------------------
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
-------------------------------------------------------------------------------------
相关文章推荐
- SD/MMC插口的规范之一:硬件特性及硬件BUG
- DNS服务和Bind配置
- 今天在使用iscroll4 做一个简单触屏滚动demo,发现上下拖动的时候总是会回弹,不能看到下面的内容.这个问题苦恼了很久,终于解决
- C队列 数组实现
- Maven入门指南⑤:使用Nexus搭建Maven私服
- Lua注册回调到C++
- 第一次 循环
- 《Spark MLlib 机器学习》第三章代码
- git push的使用
- 关于医学图像处理中钙化积分的计算
- 关于session和cookie的文章
- TCP/IP(五)IP选路和动态选路
- tomcat http Basic 认证
- 日本-大阪-京都
- LightOj 1375(欧拉变形)
- JS求两个数组 差集
- InnoDB存储引擎表的逻辑存储结构
- 彭博士谈伤精与养精~“精”到底是什么?
- 【history】查看命令历史
- 【sed】流编辑器 Stream EDitor