vim:(visual interface improved),是一款全屏的纯文本ASSCII的编辑器,是 vi 的增强版,相比较 vi 来说,vim支持语法高亮等特点。
vim是一种模式化的编辑器,常见的模式有编辑模式(命令模式),输入模式,末行模式,可视化模式,多文件模式,多窗口模式等。
Usage: vim [option]... [FILE]...
vim 选项+
vim + file 打开文件时光标处在最后一行的行首
vim +3 file 打开文件时光标处在第三行的行首
一、各个模式的介绍
编辑模式(命令模式):这个模式下键盘操作通常被理解为编辑命令
输入模式:此模式下用户可以输入文本内容
末行模式:vim内置命令行接口,执行vim内置变量
可视化模式:此模式下用户可以高亮选择文本的内容
多文件模式:此模式下用户一次可以打开多个文件
多窗口模式:此模式下在全屏下可显示多个窗口来编辑文件
二、各个模式之间的切换模式切换类型切换方法
编辑模式 -> 输入模式i,a在光标所在处的前方,后方转换为输入模式
I,A在光标所在处的行首,行尾转换为输入模式
o,O在光标所在行的上一行,下一行转换为输入模式
输入模式 -> 编辑模式ESC
编辑模式 -> 末行模式:
末行模式-->编辑模式ESC
三、编辑模式(命令模式)下的文本操作操作分类具体方法及意义
光标移动字符间移动j,kj:向下移动光标 k:向下移动光标
h,lh:向左移动光标 l:向右移动光标
#{h|j|k|l}3h:向左跳跃光标3个字符 4j:向下跳跃光标4行
单词间移动ww:光标移动到下一个单词词尾
e,be:光标跳跃到当前或下一个单词词尾
b:光标跳跃到当前或上一个单词词首
#{w|e|b}3w:光标跳跃到下3个单词的词尾
4b:光标跳跃到上3或4(光标恰好在词首)个单词的词首
行内移动0,$0:光标跳跃到绝对行首
$:光标跳跃到绝对行尾
^^:光标跳跃到行首第一个非空白字符开头处
Ctrl+f
Ctrl+b
Ctrl+u
Ctrl+d向文件尾部翻一屏
向文件首部翻一屏
向文件尾部翻半屏
向文件首部翻半屏
行间移动#G5G:将光标跳跃到第5行行首第一个非空白字符开头处
G,ggG:将光标跳跃到行尾第一个非空白字符开头处
gg:将光标跳跃到行首第一个非空白字符开头处
编辑命令x类x,#xx:删除光标所在处的字符
4x:删除光标所在处以及之后的共4个字符
d类dd D #dd d#ddd:删除光标所在处的一整行
D:同 d$ 一样,删除光标所在处行向后的所有内容
d结合w,e,b,^,$,0,G,gg一起使用dgg:删除光标处以及光标处到行首的所有内容
db:删除光标处到光标处前单词的单词首部的内容
y类yy,Y,y#y,#yyyy Y:复制光标所在处的整行
y3y 3yy:复制光标所在处的及以下共3行
结合w,e,b,^,$,0,G,gg一起使用yw:复制光标所在处向后一个单词首部的的字符
y$:复制光标所在处向后这行所有的的字符
yG:复制光标所在处向后文件尾部行所有的的字符
p类p P行级别:
p: 粘贴于当前行下方
P: 粘贴于当前行上方
小于行级别:
p: 粘贴于当前光标所在处的后方
P:粘贴于当前光标所在处的前方
c类cc,#ccc C:删除光标所在处的一整行,并进入输入模式
结合w,e,b,^,$,0,G,gg一起使用cgg:删除光标所在处到文件行首的所有内容,并进入输入模式
c0:删除光标所在处到行首的所有内容,并进入输入模式
撤消编辑u,#uu:撤销上一次操作
3u:撤销前3次操作
ctrl+r撤销上一次撤销操作
重复.重复上一条命令
四、末行模式
末行模式是执行一些vim的内置变量,以及问搜索、替换、删除等操作。在这里要引入内容定界。
内容定界的格式是:startpos,endpos。说明在末行模式下操作的范围。
内容定界符具体意义
##:第#行
3:表示第三行
..:表示当前行
$$:表示最后一行
%%:表示全文 等价于 1,$
$-# .+#支持像$-2, .+2等内容定界.+1,$-1 表示当前行的下一行至倒数第二行
下面介绍末行模式的的操作方法以及意义,这些操作都是结合内容定界符一起使用的。
种类具体意义
c d y:%y 复制整个文本内容
:.,30d 删除当前行道30行的内容
100c:删除100的内容,并变为输入模式,在100行的行首
w rw /path/to/somefile: 将选定范围内的内容保存至某文件
r /path/from/somefile: 将指定的文件中的内容读取到指定位置中
`例如:
:1,100w /tmp/test.txt 将1,100的内容保存到/tmp/test.txt文件中
:54r /etc/passwd 将/etc/passwd文件内容加入到54行的下面
s///gis/要查找内容的模式/要替换的字符串或者引用/gi
其中g: global, 全行替换 i: 不区分字符大小写
:%s@^[[:space:]]\{1,\}@@g 删除整个文本的空白行
/ ?/ ? 是命令行搜索,支持正则表达式
/pattern 向下搜索
?pattern 向上搜索
N n 使用n,N上下查看
命令:set nu 显示行号
:set nonu 取消显示行号
:set ai 自动缩进
:set noai 取消自动缩进
:set ic 设置忽略大小写
:set noic 取消设置忽略大小写
:set sm 设置括号匹配
:set nosm 取消设置括号匹配
:syntax on|off 设置语法高亮
:set hlsearch 设置搜索高亮
:set nohlsearch 取消设置搜索高亮
五、可视化模式,多文件模式,多窗口模式
1)可视化
v:指的是国标所走过的字符
V:指的是国标所走过的行
例如:在某些连续的行首加入#号。编辑模式下:V-->选中行--->I--->#---->ESC就可完成此功能。
2)多文件模式
vi file1 file2 file3... 在末行模式下可以使用next,previous,last,first关键字打开下一个,上一个,最后一个,第一个文件。使用wqall可以保存全部文件。
3)多窗口模式
多文件模式:vim -o:水平分割窗口
-O:垂直分割窗口
单文件模式:
Ctrl+w, s: 水平分割
Ctrl+w, v: 垂直分割
六、配置文件
/etc/vimrc:全局的
~/.vimrc:用户模式下的配置文件
补充:
1.设置制表符宽度:set tabstop=4:set softtabstop=42.设置缩进的空格数:set shiftwidth=43.每行的缩进值与上一行相等:set autoindent4.使用C/C++语言的自动缩进方式
:set cindent5.显示行号:set nu6.将搜索内容反白:set hlsearch7.可以删除任意值:set backspace=2
本文侧重介绍的是vim文本编辑器的使用。