一、vim简介
vim是vi的增强版,是一个模式化的编辑器,功能非常的强大。通常,vim共分为3中模式,分别是编辑模式、输入模式、和末行模式
编辑模式:是vim的默认模式,通过vim打开文件一开始就是编辑模式,可进行删除,复制等操作
输入模式:又叫插入模式,在该模式下输入的内容都会当做文本内容来使用
末行模式:即在整个屏幕的最下方,在里面可以键入命令实现一些在编辑模式下无法实现的特性和功能,比如查找替换,行标显示等
用vim打开文件的格式为:vim [options] /path/to/somefile
说明这里的路径可以省略,等文件内容写完在决定保存的路径也是可以的
二、模式转换
编辑模式-——>输入模式:
i:insert,实现在当前光标所在处转换为输入模式
a:append,实现在当前光标所在处字符后面转换为输入模式
o:实现在当前光标所在行的下方新建一个空白行并转换为输入模式
I:在当前光标所在行的行首转为输入模式
A:在当前光标所在行的行尾转为输入模式
O:在当前光标所在行的上方新建一行,并转换为输入模式
输入模式——>编辑模式转换
按下Esc键
编辑模式——>末行模式
键入“:”
末行模式——>编辑模式
一般要按两次Esc,Esc
说明:输入模式到末行模式是无法直接实现的,只能先转换为编辑模式,然后在转换为末行模式
三、光标跳转
字符间跳转:
h:向左
l:向右
j:向下
k:向上
在他们之前加上数字就可以实现向某个方向移动多少位,如:5h就表示向左侧跳5个字符,这些操作都是在编辑模式下实现的
单词间跳转:
w:跳至后一个单词的词首
e:跳至当前或下一个单词词尾
b:跳至当前或者前一个单词的词首
句子间跳转:
):跳至下一句
(:跳至前一句
段落间跳转:
}:跳至后一段
{:跳至前一段
行间跳转:
1G:跳到第一行
G:跳到最后一行
#G:跳到某一行
行内跳转:
^:跳到行首,跳到行首第一个非空白字符
$:跳到行尾,绝对行尾
0:跳到行首,绝对行首
四、文件处理
关闭文件:
在末行模式下进行
:w 保存
:q 退出
:! 强制
:wq 保存退出
:q! 强制退出不保存
:x 保存并退出
:qall全部退出
:w!强制保存
:wall所有的都保存
:wqall所有的保存退出
在编辑模式下:
ZZ:保存退出
打开文件:
vim [options] /path/to/file
vim +# /path/to/file 打开文件光标直接定位到#行
vim + /path/to/file 只有一个“+”号,打开文件光标直接定位到最后一行
打开多个文件:
格式:vim 文件1 文件2 文件3...
多文件间跳转在末行模式下进行:
:next下一个
:last最后一个
:first第一个
:prev 前一个
下面选项可实现多文件分割窗口格式为:vim [Option] 文件1 文件2 文件3...
-O:垂直分割窗口
-o:水平分割窗口
文件间切换敲击ctrl+w然后按上下左右箭头
编辑命令:
x:删除单个字符
#x:删除光标所在处向右几个字符
删除命令d;
dw:删除当前光标到单词尾的所有字符
db:删除当前光标之前的单词
de:删除光标之后的单词
d^:删除光标到行首的所有字符
d$:删除光标到行尾的所有字符
dd:删除光标所在行
#dd;删除光标所在行及向下#行
在末行模式下使用d命令
末行模式支持地址定界:
用法: 起始地址,结束地址
$:最后一行
.:当前光标所在行
%:全文
1,7d:第一行到第七行删除
%:表示全文
1,$:也表示全文
1,+6:第一行在向下数6行
1,$-2:第一行到倒数第三行
.,+3:当前行在向下3行
编辑操作可撤销:
u:默认会保存最近50次的操作,u命令可逐一撤销此前编辑的操作
撤销此前的撤销:ctrl+r
粘贴操作:
p:
删除的是整行:
p:在当前光标所在行的下方粘贴
P;大写P,在当前光标所在行的上方粘贴
删除的不是整行;
p:在当前光标所在处字符的后面粘贴
P:大写P,在当前光标所在处字符的前面粘贴
复制:用y键
yy:复制一行
#yy:复制#行
y$:复制光标到行尾
y^:复制光标到行首
复制的是整行:
p:在当前光标所在行的下方粘贴
P;大写P,在当前光标所在行的上方粘贴
复制的不是整行;
p:在当前光标所在处字符的后面粘贴
P:大写P,在当前光标所在处字符的前面粘贴
通过vimtutor命令可以帮助学习vim
翻屏:
ctrl+f;向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
文本搜索:
/keyword:从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n:下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
说明:文本搜索支持模式匹配,也即支持正则表达式的匹配
例如:字母d中间有两个字母后跟n的单词/\<d[[:alpha:]]\{2\}n\>
编辑命令
cc:删除当前光标所在行并转化为输入模式
#cc:删除当前光标所在行向下#行并转化为输入模式
c$:删除当前光标所在处到行尾并转化为输入模式
c^:删除当前光标所处到行首并转化为输入模式
c0:删除至行首并转化为输入模式
vim支持可视化模式
v:选中光标划过的字符
V:选中光标划过的行,整行选取
按Esc即可返回到编辑模式
同一文档窗口分割:
ctrl+w,s;水平分割
ctrl+w,v:垂直分割
ctrl+w,箭头
窗口属性定义:
显示行号:
set number,set nu
set nonumber,set nonu
自动缩进
set autoindent,set ai
set noai
不区分字符大小写
set ingorecase,set ic
set noic
获取帮助
set 敲enter键
显示匹配括号
set showmatch,set sm
set nosm
语法着色:
syntax on
syntax off
搜索高亮显示
set hlsearch
set nohlsearch
vim的配置文件
全局 /etc/vimrc 只有管理员才有权限修改配置,修改之后对所有用户都有效
个人:~/.vimrc 这个文件实际不存在自己创建即可,修改之后只对当前用户自己有效对其他用户无效
查找替换在末行模式下
格式为 :地址定界s/查找模式/替换成的内容不能使用模式/gi
也可以 :地址定界s@查找模式@替换成的内容不能使用模式@gi
查找模式可以使用正则表达式
global全局替换
ignorecase 查找时不区分大小写
%表示全文搜索