# vim小技巧
`.`   重复上一个操作

## 目录
- [录制宏](#录制宏)
- [打开终端](#打开终端)
- [快捷键](#快捷键)
  - [移动](#移动)
  - [插入](#插入)
  - [修改](#修改)
  - [删除](#删除)
  - [复制](#复制)
- [基本补全](#基本补全)
  - [补全菜单](#补全菜单)
- [vimrc](#./.vimrc)

## 录制宏
使用 q[Key] 开始录制宏,再次点击q结束录制
@[Key]	调用宏
@@		重复调用

##	打开终端
`:term`或`:vert term`  
从终端转到普通模式:`<c-\>+<c-n>`

##	快捷键
###	移动
+ 0	gm  行首行尾
+ ngg     移动到第n行
+ fc tc	搜索字符	; , 可重复
+ c-u     上半屏
+ c-d     下半屏
+ Shift-[ 跳转到上一个空行
+ *       移动到下一个与当前指针下相同单词的位置
+ #       移动到上一个与当前指针下相同单词的位置
+ Ctrl + ]  跳转到标签,依赖于tags文件
+ `ctags -R .` 创建目录下的跳转文件
+ Vim 会记录跳转历史，使用 Ctrl + T 或 Ctrl + O 返回到上一个位置
+ gf  跳转到文件路径
+ `c-o`  后退一步
+ `c-i`  前进一步
+ `[a-z] / `[A-Z]   跳转到标记位置 大写全局,小写本文件,用m[a-z]设置标记
  + ` 上次跳转的位置
  + . 最后一次修改的位置

###	插入
+ I A  行首 行末 插入
+ n<<  n>>  多行左右移动

## 修改
+ r	R   替换光标下的字符
+ c-i-( 替换括号内的内容可以使用任何括号匹配

###	删除
+	x	删除光标下字符
+	J   与下一行合并
+ Shift-d  从当前字符删除到行末

###	复制
+	"x  使用寄存器x进行下一次复制 粘贴 删除
	:reg	显示所有寄存器

###	可视模式
+	o	
	交换选择区域另一端和光标的位置
+	aw	as	ap	ab	aB
	选择一个单词 句子 段落 () {}
+	vi{
	选中一整个大括号内
+	va{
	选中一整个大括号全部
+  ]f
	在文件中若出现文件名,指针放在上面使用这个快捷键可直接打开

## 基本补全
1. Ctrl+n - 普通关键字补全（向下浏览）
  - 在当前文件和包含文件中查找匹配项
  - 适用于变量名、函数名等
2. Ctrl+p - 普通关键字补全（向上浏览）
  - 与 Ctrl+n 相同，只是方向相反
3. Ctrl+x Ctrl+f - 文件名补全
  - 在输入路径时自动补全文件名
4. Ctrl+x Ctrl+l - 整行补全
  - 补全整行代码（从当前文件中查找相似行）

### 补全菜单
1. `c-n``c-p`  上下移动
2. `c-y`  确认
3. `c-e`  退出
