Vim刚启动的时候进入的是命令模式,常用的几个命令有:
i 切换到输入模式,以输入字符
x 删除当前光标所在处的字符
: 切换到底线命令模式,以在最底一行输入命令。
输入模式
:命令模式按下i进入输入模式
字符按键以及Shirt组合 输入字符
ENTER回车键 换行
BACKSPACE退格键 删除光标前一个字符
DEL 删除键 删除光标后一个字符
方向键 在文本中移动光标
HOME/END 移动光标到行首/行尾
Page Up/Page Down 上/下翻页
Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
ESC 退出输入模式,切换到命令模式
底线命令模式
:命令模式下按下(英文冒号:)进入底线命令模式
基本命令
:
q 退出程序
w 保存文件
ESC 出底线命令模式
分屏、窗口:
:sp分屏
HJKL左下上右移动
zc 合并
Ctrl+w 切换窗口
撤销:
U 撤销上一步操作
Ctrl+r返回上一步撤销的操作
复制、剪切、删除:
dd剪切一行 p 粘贴
dt’删除所有内容直到遇到单引号’
yy复制一行 p 粘贴
x删除当前光标字符
p在光标前粘贴
P在光标后粘贴
选择复制按v进入选择模式,然后按hjkl移动光标,选择文本,然后按y进行复制,按p进行粘贴
光标移动:
gg到第一行
G到最后一行
:N到第N行,如:13到第13行
w到下一个单词的开头
e到下一个单词的结尾
*或#在当前文件中搜索当前光标的单词
%匹配括号移动,移动到括号匹配处
Ctrl+o向后回退光标移动
Ctrl+I向前追赶光标移动
0数字0,到行头
$美元符,到本行行尾
fa到下一个为“a”的字符处,也可以为fs,到下一个为s的字符,F反向
t,到逗号前的第一个字符,逗号可以变成其它字符。“T”反向
^到本行第一个不是blank字符的位置(blank字符就是空格、tab、换行、回车等)
g_到本行最后一个不是blank字符的位置
/pattern搜索pattern字符串,如果搜索出多个匹配,按n键到下一个。
shell命令相关:
:r!date:r是:read的缩写,!是表明要运行一个shell命令,意思是我要把shell命令的输出读到vim里来。
缩进相关:
=对齐缩进当前行
=%把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
G=gg或gg=G缩进整个文件(G是到文件结尾,gg是到文件开头)
>>向右缩进
<<向左缩进
字符:
guu或Vu把一行文字全部变成小写
gUU或VU把一行文字全部变成大写
v进入可视化,进入可视化后,可单独对所选文字进行操作
gU将所选文字都变大写
gu将所选文字都变小写
ga查看光标处字符的ascii码
g8查看光标处字符的utf-8编码
gf 打开光标处所指的文件 (这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
插入模式:
i在光标前插入
a在光标后插入
o在当前行后插入一个新行
O在当前行前插入一个新行
文件相关:
:w存盘
:x或:wq或ZZ保存并退出
:q!退出不保存
:e <path/to/file>打开一个文件
:bn和:bp当同时打开多个文件时,使用这两个命令来切换下一个或上一个文件
:saveas <path/to/file>将文件另存为<path/to/file>
命令重复:
.小数点可以重复上一次的命令
3.重复3次命令
命令组合:
格式:
0y$从行头拷贝到行尾
ye从当前位置拷贝到本单词的最后一个字符
块操作:
典型操作:0 Ctrl+v hjkl(或%匹配或Ctrl+d向下移动)I-- 【ESC】
I是插入,插入“–”,按ESC键为每一行生效。
自动补齐提示:
在Insert模式下,输入一个词的开头,按tab键或Ctrl+n或Ctrl+p
可视化选择:
按v或V或Ctrl+v进入可视化选择
J把所有的行连接起来(变成一行)
在所有被选择行后加东西按<Ctrl+v> j选择行 $到行最后 A输入字符串,按ESC生效
分屏:
:sp分屏
:split创建分屏
:vsplit创建垂直分屏
<Ctrl+w> hjkl或箭头切换分屏
<Ctrl+w> _最大化尺寸
<Ctrl+w> +增加尺寸
<Ctrl+w> -减少尺寸
代码跳转:
到项目根目录下运行ctags --R 生成tags文件
CTRL + ] 跳转到声明处
CTRL + T原路返回
替换、查找:
:%s#hello#hi#g文件内全部替换,用hi替换文件中所有的hello。(如果文件内有#,可用/替换)
:10,50s#hello#hi#g把10到50行内的“hello”全部替换成“hi”
【注意】如果在g后面再加上c,则会在替换之前显示提示符给用户确认是否替换。
:%s#hello#hi#gc替换之前确认
vj命令原理:
在/usr/local/bin目录下建立vj文件,内容如下
if [ $# = 1 ]
then
vim +"Project $1"
else
vim +"Project .prjide"
fi
类似于命令:vim +“Project AbstractFactory.prj”
【技巧:vim后台】Ctrl + z 将vim切换到后台,jobs 查看vim在后台那个jobfg 1 打开对应的job
:vertical res 20 设置vim窗口的宽度