感谢
在使用vim的过程中曾经在网上查看过许多网友的资料,在此对这些无名的网友表示衷心的感谢!
打开文件
vim file 打开file文件;
vim + file 打开file文件并定位到最后行;
vim +num file 打开file文件并定位到第num行;
vim -o[num] file1 file2 ... filenum 在一个终端窗口中同时打开file1 file2 ... filenum共num个文件;
ctrl+w w在一个终端中同时打开的几个文件之间跳转。
光标定位
j、k、h、l 光标向前、后、左、右移动一个位置,[num] + j、k、h、l 光标向前、后、左、右移动num个位置;
ctrl + f、ctrl + b、ctrl + d、ctrl + u 分别向下、上移动一页,向下、上移动半页;
H、M、L 分别移动到当前页的前、中、后位置;
[ 或 ] + [ 或 ] 移动到上、下一个函数的开始({)或结束(})位置;
gg、shift + g 移动到文件第一行、最后一行;
0零、$移动到行首、尾,^ 移动行首空格后;
w、e 移动到下一个单词的首、尾;num w、num e 移动到下num个单词的首、尾;
b 移动到上一个单词首,num b移动到上num个单词首;
查找
在命令行模板下输入 / ,然后输入要查找的内容,回车进行匹配查找,按n往下查找,N往上查找;
fc、Fc分别在当前行查找下、上一个字符c;
定位到函数定义处
前掉:已经安装ctags, 在程序的根目录下运行ctags -R生成tags文件。
ctrl + ] 跳转到函数定义处,ctrl + o 跳回到之前的位置;
编辑内容
u 撤销,ctrl + shift + g 重做;
guu、gUU 将当前行全部转为小写、大写字母;
r 替换光标位置字母,cw替换光标位置单词;
:s/old/new 替换当前行第一个old单词为new;
:s/old/new/g 替换当前行old所有单词为new;
选中
v 从光标所在处开始进行上、下、左、右选中,以字母为单位;
shift + v 从光标所在行开始选进行上、下选中,以行为单位;
vip 或 vis 选中一个代码块,即没有空行的一块;
viw 选中一个单词;
vi + (、{、<、'、" 分别选中相应符号对中间的内容,不包括符号对;
va + (、{、<、'、" 分别选中相应符号对中间的内容,包括符号对;
复制、剪切、粘贴、删除
1、在选中内容后按 yy 复制选中内容;
2、在没有选中内容时
yy 复制当前行, num yy 复制当前行往下num行;
x 删除光标处字母, num x删除光标处往后num个字母;
dd 删除当前行,num dd删除当前行往下num行;
n1, n2 d 将n1到n2行内容删除;
n1,n2 co或m n3 将n1到n2行的内容拷贝或剪切到n3行下;
进入编辑模式
i、a、I、A 分别表示在光标前、后、行首、行尾插入;
o、O 分别在光标的下、上一行新建一行插入;
设置
:set hlsearch 打开高亮显示;
:nohlsearch 关闭当前高亮显示的文本;
:set nohlsearch 关闭高亮显示;
保存、退出
w、q、! 保存、退出、强制。