vi和vim常用的三种模式
1.正常模式
正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。
按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
2.插入模式
可以输入文本,在正常模式下,按i、a、o、O、I、A、r 等都可以进入插入模式,一般来说按i即可。
3.命令行模式
一般命令模式、底部命令模式:
可以使用快捷键命令,或按 ":" 输入命令行。
2.2 常用的命令:
2.2.1 进入编辑模式:
a 在当前光标后面插入
A 在行尾插入
i 在当前光标插入
I 在行首插入
o 在下一行插入
O 在上一行插入
u 撤销
Ctrl+r 返回上一级
ciw 删除当前一个单词,并进入插入模式 要结合 :set showcmd 显示字符来用
ct" 删除双引号中间的内容,并进入插入模式
ctf 删除从当前位置到下一个f字符之间的字符
2.2.2 自动填充:
在输入模式下输入部分字符然后输入
ctrl +x 和 ctrl + n 用正在编辑的文件的内容作为关键字补齐。 :用ctrl+n就是可以了
ctrl +x 和 ctrl + f 以当前目录内的文件名作为关键字补齐。 :可以补全当前目录下的文件名
ctrl +x 和 ctrl + o 以拓展名作为语法填充,以vim内建的关键词补齐。(必须要写对文件拓展名, 比如.html,.php等等。
2.2.3 光标定位:
A|end|$ 将光标定位到行尾
0|home|^ 将光标定位到行首
gg 将光标定位到文件第一行
G 将光标定位到后一行
w 前移一个单词,光标停在下一个单词开头;
e 前移一个单词,光标停在下一个单词末尾;
b 后移一个单词,光标停在上一个单词开头;
nG 到文件第n行。
:n 移动到第n行。
fm 快速定位到当前行,光标之后的第一个m字符处(通常在行首使用),如果有多个相同字符,可以使 用分号;进行下一个选择。
Fm 同上,只是反向查找。
:nohl 去掉光标
2.2.4 复制/剪切/粘贴:
yy 复制整行
p(小写) 粘贴(在下一行粘贴)
P(大写) 粘贴(在上一行粘贴)
y$|y+end 从光标当前位置复制到行尾。
y0 从光标当前位置复制到行首。
d$|D|d+end 删除(剪切)当前位置到行尾的内容。
d0|d+home 删除(剪切)当前位置到行首的内容。
[n] dd: 删除(剪切)1(n)行。
:m,nd 剪切m行到n行的内容。
dgg: 剪切光标以上的所有行。
dG: 剪切光标以下的所有行。
daw和das:剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系
2.2.5 替换(一般命令模式):
r: 替换光标处的字符,同样支持汉字。
R: 进入替换模式,按esc回到正常模式。
2.2.6 替换(底部命令模式):
:s/old/new 用new替换当前行第一个old。
:s/old/new/g 用new替换当前行所有的old。
:n1,n2s/old/new/g 用new替换文件n1行到n2行所有的old。
:%s/old/new/g 用new替换文件中所有的old。
:%s/^/xxx/g 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g 在每一行的行尾插入xxx,$表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc
1,100 第一行到第一百行
//是内容
^ 行首
\s 空格
\s* 多个空格
\s*# 多个空格后面后#
//d 搜索到的删除,d代表删除
\s - 一个空白字符
2.2.7 文档保存/退出:
:wq 保存并退出。
ZZ 保存并退出。
:x 保存并退出
:q 文档未编辑时,可以直接退出。
:q! 文档编辑过了,强行退出,不保存。
:w 保存修改。
:w file2 将修改的文件保存到另外一个文件。
:r file3 读取当前目录下的file3内容到当前文档。
:e! 一个文档修的地方太多了,后自己都不知道哪里改对了,哪里改错了,可以使用重新加载文档, 丢弃已做的改动。
:Sex 水平分割一个窗口,浏览文件系统,等同vim -o file1 file2; 结合ctrl +w 来切换窗口
:Vex 垂直分割一个窗口,浏览文件系统,等同于vim -O file1 file2;结合ctrl +w 来切换窗口
ctrl +w 连按两次w,可实现两个窗口的切换
% 快速匹配括号
gf 打开以光标所在字符串为文件名的文件。然后使用ctrl + ^ 可以再次回到源文件。
2.2.8 基本排版:
< 先输入v进入可视化模式,向左缩进一个shiftwidth
> 先输入v进入可视化模式,向右缩进一个shiftwidth
:ce(nter) 本行文字居中
:le(ft) 本行文字靠左
:ri(ght) 本行文字靠右
2.2.9 编辑多个文件:
vim a.txt b.txt c.txt -p
* 使用:next(:n)编辑下一个文件。
* :2n 编辑下2个文件。
* 使用:previous或:N编辑上一个文件。
* 使用:wnext,保存当前文件,并编辑下一个文件。
* 使用:wprevious,保存当前文件,并编辑上一个文件。
2.2.10 改变大小写:
shift ~: 反转光标所在字符的大小写。
可视模式下的U:把选中的文本变为大写或小写。
v 可视字符 ,可以选择多个字符 ,再按U ,可以完成大小写切换
V 可视行,可以选择多行,再按U,可以完成大小写切换
2.2.11 文件加解密:
vim -x file: 开始编辑一个加密的文件。
:X 为当前文件设置密码。
:set key= 去除文件的密码。
2.2.12 折叠:
zf 创建折叠的命令,可以在一个可视区域上使用该命令,可缩减空间方便阅读;
zo 打开折叠的文本
zc 收起折叠;
zd 删除当前行的折叠,删除之后就不能再次折叠了;
za 打开/关闭当前折叠;
zfap 折叠光标所在的段;
zR (zO) 打开所有折行;
zM (zC) 收起所有折行;
2.3 常见设置:
2.3.1 智能缩进:
:set si
取消:
:set nos
2.3.6 设置文件格式:
设置为windows格式:
:set fileformat=dos 设置为unix格式:
:set fileformat=unix
简写:
:set ff=unix|dos
2.3.7 增量搜索:
:set incsearch
2.3.8 显示命令:
:set showcmd
2.3.9 更换主题:
显示当前使用的主题
:colorscheme
显示所有可用的主题
:colorscheme + ctrl +d
更换主题颜色:
:colorscheme morning