VIM是什么,为什么要用
vim是什么
vim是一个文本编辑器,跟windows上notepad是一类编辑文本的工具
为什么要用
在Linux命令行界面下有很多文本编辑器,如Emacs、nano、vi等,vim就是一个加强了的vi编辑器,提供了语法作色、可视化操作、兼容vi等特性。有些类UNIX上不一定就装有vim ,有时vim命令打开的也有可能是vi编辑器,只是设置了别名
- 在很多类unix 的操作系统中系统编辑配置文件或文本会自动调用vi编辑器
- vim 提供了语法高亮,语法作色能方便文本编辑、脚本编辑
- 可以做到不用鼠标进行文本编辑,如多行复制,多行删除(b格较高)
- ……
vim的三种模式
- 编辑模式
- 输入模式
- 末行模式
编辑模式
通常键入键盘值被理解成一个操作; 如: dd(删除行)、y(复制整行)
输入模式
通常键盘的键入直接理解成文本
末行模式
通常:
打头开始等待用户键入操作
模式之间相互切换
输入模式下不能直接进入末行模式
- 编辑
-->
输入
i:在当前光标所在字符
前面
,转为输入模式
a:在当前光标所在字符后面
,转为输入模式
o:在当前光标所在行下新建一行
,转为输入模式
I:在当前光标所行的行首
,转为输入模式
A:在当前光标所行的行尾
,转为输入模式
O:在当前光标所在行上新建一行
,转为输入模式
- 输入
-->
编辑
按
ESC
键
- 编辑
-->
末行
按
:
键
- 末行
-->
编辑
按
ESC
键(一次不管用多按一次)
打开文件
vim /PATH/TO/FILE
vim +# /PATH/TO/FILE
打开文件处在第#行(#表示数字)
vim + /PATH/TO/FILE
打开文件滞留在最后一行
vim +/PATTERN /PATH/TO/FILE
打开文件,停留在第一次被PATTERN匹配之后
打开文件后默认处于编辑模式
关闭文件
- 末行模式下关闭文件
- w:保存文件
- q:退出
- q!:强行退出
- wq:保存并退出
- w!:强行保存
- x:保存退出
- 编辑模式下关闭文件
- ZZ:保存退出
移动光标
编辑模式下
- 逐字符移动
- h:左
- l:右
- j:下
- k:上
#h:表示向左移动多个字符(#为数字)
- 按单词为单位移动
- w:移至下一个单词的词首
- e:跳至当前或下一个单词的词尾
- b:跳至当前或前一个单词的词首
#w:移动#个单词(#为数字)
- 行内跳转
- 0:绝对行首
- ^:行首第一个非空白字符
- $:绝对行尾
- 行间跳转
-
#G
:跳至第#
行(#
表示数字) - G:最后一行
在末行模式下,可直接给出行号
翻屏
[ CTRL ] + [ f ]:向下翻一屏
[ CTRL ] + [ b ]:向上翻一屏
[ CTRL ] + [ d ]:向下翻半屏
[ CTRL ] + [ u ]:向上翻半屏
删除字符或行
- x:删除光标所在处的单个字符
-
#x
: 删除光标所在处向后#
单个字符(#
为数字) - d:删除命令(通常跟跳转命令组合使用)
- 如:
#dw、#de、#db
。表示光标所在位置往后或往前删除几个单词 - dd:删除当前光标所在行
-
#dd
:删除包括当前光标所在行内的#
行(#
表示数字) - 末行模式下:
startLine
(开始行号),endLine
(结束行号)d
-
.
:表示当前行 -
$
:末行 -
+#
:向下#
行
如:0,$d
表示删除全篇内容,0
表示首行,$
表示末行,d
表示删除
-
- 如:
复制 & 黏贴 & 修改 & 替换 & 撤销
粘贴命令
- p:如果删除或复制的为整行内容,则粘贴至光标所在行的上方;如果删除或复制的为非整行内容,则粘贴至光标所在字符的前面
- P:如果删除或复制的为整行内容,则粘贴至光标所在行的下方;如果删除或复制的为非整行内容,则粘贴至光标所在字符的后面
复制命令
- 用法跟
d
删除命令一样
修改命令
- 用法跟
d
删除命令一样
替换命令
- r:单个字符替换
- R:进入替换模式
撤销编辑操作
- u:撤销前一次的编辑操作
连续u命令可撤销此前n次操作 -
#u
:撤销#
次操作(#
表示数字)
重复前一次编辑操作
.
符号
可视化模式
v:按字符选取
V:按矩形行选取
查找并替换
查找
-
/PATTERN
、?PATTERN
PATTERN
表示模式或者是正则
n:(/PATTERN
下一个匹配结果;?PATTERN
上一个匹配结果)
N:(/PATTERN
上一个匹配结果;?PATTERN
下一个匹配结果)
查找并替换
在末行模式下使用s命令
StartLine,EndLines@PATTERN@STRING@修饰符
如:0,$s@^root$@ROOT@g
从第0行到最后一行将小写的root替换成大写的ROOT
修饰符: g 全局; i 忽略大小写
%: 表示全文
&:引用模式匹配到的串
窗口文件操作
打开多个文件
vim FILE1 FIEL2 ...
如果需要进行文件切换在末行模式下执行
next :下一个文件
prev :上一个文件
last :最后一个文件
first:第一个文件
末行模式执行qa退出此次打开所有文件
分屏显示内容
[ CTRL ] + w,s:水平拆分
[ CTRL ] + w,v:垂直拆分
在窗口间切换光标
[ CTRL ] + w,方向光标
qa:关闭所有
分窗口编辑多个文件
vim -o : 水平分割显示
vim -O : 垂直分割显示
将当前文件中的部分内容另存为另外一个文件
末行模式下使用命令
:w
:StartLine,EndLinew /PATH/TO/FILE
将另一个文件的的内容填充在当前文件中
末行模式下使用命令
:r /PATH/TO/FIEL
跟shell交互
:! COMMAND
,COMMAND为要执行的命令
高级话题
- 显示或取消显示行号
:set number 显示
:set nu 简写
:set nonu 取消
- 显示忽略或区分字母大小写
:set ignorecass 忽略
:set ic 简写忽略大小写开启
:set noic 关闭忽略
- 设定自动缩进
:set autoindent 开启
:set ai 简写;同上
:set noai 关闭
- 查找到的文本高亮显示或取消
:set hlsearch 开启
:set nohlsearch 关闭
- 语法作色
:syntax on 开启
:syntax off 关闭
vim配置文件
-
/etc/vimrc
全局vim配置文件 -
~/.vimrc
自定义vim配置文件