返回上一级

目录

返回目录

使用步骤

返回目录

"头文件处 gf打开该头文件
"添加项目之前的头文件路径 就可使用gf打开相关头文件
"添加ARM库文件路径 与安装软件路径有关
set path+=C:/Keil_v5/ARM/ARMCC/include/**
"添加项目文件路径 如何修改为相对路径更为通用???
set path+=D:/Inker/Work/Model/S32F3wc/trunk/SW_S32F3_MAIN/code/**


" lookupfile
let g:this_project_base_dir = "."
let g:project_lookup_file   = "./filenametags"
let g:LookupFile_TagExpr    ='"./filenametags"'

" filenametags 不存在自动创建
if filereadable("filenametags") == 0
    execute "call ProjectTagUpdateLookupFile()"
endif

"  cscope.out 存在自动连接
if filereadable("cscope.out")
    execute "cs add cscope.out"
else
    execute "call Do_CsTag()"
endif 

移动操作

返回目录

j 向下
k 向上
h 向左
l 向右
   
w 到下一个单词的开头。
b 到上一个单词的开头。
e 到下一个单词的结尾。
   
W 到下一个字符串的开头。
B 到上一个字符串的开头。
E 到下一个字符串的结尾。
   
% 匹配括号移动,包括 (, {, [
   
0 到行头
$ 到行尾
   
_ 到当前行首个字符 与^一样
g_ 到本行最后一个不是blank字符的位置
   
zz 当前光标置于屏幕中间显示
zt 当前光标置于屏幕顶部显示
zb 当前光标置于屏幕顶部显示
   
ctrl-f 上翻一页
ctrl-b 下翻一页
   
Ctr+] 进入函数、定义、结构体
Ctr+o 返回函数、定义、结构体
   
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找
   
gg 到第一行 (相当于1G,或 :1)
G 到最后一行
nG 到第 n 行

排序sort

返回目录

original :sort :sort n :sort!n
999 1 1 999
1 10 2 101
50 100 3 100
2 101 7 50
3 11 9 30
7 18 10 23
9 19 11 19
10 2 18 18
11 23 19 11
23 3 23 10
30 30 30 9
18 50 50 7
19 7 100 3
100 9 101 2
101 999 999 1

替换字符

返回目录

在一行内替换头一个字符串 old 为新的字符串 new,请输入   :s/old/new
在一行内替换所有的字符串 old 为新的字符串 new,请输入   :s/old/new/g
*******************
在两行内替换所有的字符串 old 为新的字符串 new,请输入   :#,#s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入   :%s/old/new/g
进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc

录制复杂命令宏

返回目录

.只能重复单个命令 所以可以使用寄存器记录实现复杂命令集
查看帮助 usr_10.txt 做大修改 
启动a组记录         qa
结束a组记录         q
显示a记录过程并修改 "ap
回写修改后a记录     0 "ay$
执行a组记录         @a  3@a
a组记录追加         qA

书签Mark

返回目录

小写的是文件书签,可用(a-z)中任意字母标记。
大写的是全局书签,可用(A-Z) 中任意字母标记。

创建一个书签
m{a-zA-Z}
打开一个书签
'{a-zA-Z}
'0 打开上次退出的位置
:marks -> 显示系统全部书签
:delm! -> 删除全部书签 (delete all marks)
:delm {marks} -> 删除一个书签 例如:delm a那么就删除了书签a

自动补全功能

返回目录

Ctrl+P	向前切换成员
Ctrl+N	向后切换成员
Ctrl+E	表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y	表示退出下拉窗口, 并接受当前选项

Ctrl+X Ctrl+L   整行补全
Ctrl+X Ctrl+N	根据当前文件里关键字补全
Ctrl+X Ctrl+K	根据字典补全
Ctrl+X Ctrl+T	根据同义词字典补全
Ctrl+X Ctrl+I	根据头文件内关键字补全
Ctrl+X Ctrl+]	根据标签补全
Ctrl+X Ctrl+F	补全文件名
Ctrl+X Ctrl+D	补全宏定义
Ctrl+X Ctrl+V	补全vim命令
Ctrl+X Ctrl+U	用户自定义补全方式
Ctrl+X Ctrl+S	拼写建议

可视模式

返回目录

v(小写) 字符选择,会将光标经过的地方反白选择
V(大写) 行选择,会将光标经过的行反白选择
Ctrl+q    块选择,按o,O来切换四个顶点
注意:在windows系统中 control+v被系统占用了,所以改为control+q完成相同的功能。 (;v)
eg:
使用块完成多行注释 I A $
1 Ctrl+q进入块选择n行
2 I进入插入模式 //
3 ESC 

调整窗口大小/切换/分屏

返回目录

C-wv 分屏
C-wh 切换左边屏
C-wl 切换右边屏
C-wc 关闭分屏
C-wo 单屏分屏
Ctr+w 20 |   调整当前窗口水平宽度为20
Ctr+w 1  _     调整窗口为1行 比如标签栏调整
Ctr+w 20 _    调整窗口为20行 比如Quickfix窗口调整

缩进

返回目录

<<       当前行向左缩进 
>>       当前行向右缩进 
3<<      3行向左缩进
2>>      2行向右缩进
a 按v进入visual状态,选择多行,用>或<缩进或缩出 
  使用.重复执行缩进
b :20,30>>>  20行到30行缩进3次
  :<Ctrl-r>:    重复执行最近一条命令

重复执行最近一次命令

返回目录

1  :<Ctrl-r>:
2  @: 重复执行最近一次命令
3 3@: 重复执行3次最近命令

使用二进制与字符查看和编辑文件

返回目录

二进制查看:
:%!xxd -g 1
返回字符模式:
:%!xxd -r

折叠代码

返回目录

_vimrc 定义

set fdm=syntax   " 启动时开启折叠功能

zM      启动折叠
za      开启/关闭当前折叠
zi      开启/关闭全部折叠(不会折叠zo打开的代码部分可使用zm)
zj      下一个折叠处
zk      上一个折叠处

for

返回目录

:for i in range(0,4)|put='GPIO_PIN'.i|endfor
GPIO_PIN0
GPIO_PIN1
GPIO_PIN2
GPIO_PIN3
GPIO_PIN4

查看标签/寄存器/各模式快捷键/字符映射

返回目录

尾行输入
:marks                   |显示标签信息          
:reg                     |显示寄存器信息        

:map                     |查看所以快捷映射表
:imap                    |查看编辑模式所以快捷映射表
:nmap                    |查看普通模式所以快捷映射表
:vmap                    |查看可视模式所以快捷映射表
:cmap                    |查看命令模式所以快捷映射表

:iab                     |查看编辑模式所以字符映射表
:cab                     |查看命令模式所以字符映射表

配置文件操作

返回目录

*打开_vimrc
:edit $vim/_vimrc
:ed   $vim/_vimrc

*重载_vimrc
:so $vim/_vimrc

删除d/复制y/粘帖p/替换c/插入aio

返回目录

a        在光标后插入
i        在光标前插入

o        在当前行后插入一个新行
O        在当前行前插入一个新行

cw       替换从光标所在位置后到一个单词结尾的字符
cb

p        表示粘贴在当前位置之后
P        表示粘贴在当前位置之前
yy       拷贝当前行
y3y      拷贝当前向下3行
yyp      拷贝当前行粘贴到当前行之后
yyP      拷贝当前行粘贴到当前行之前
yiw      拷贝一个单词

dw       删除一个单词后面
db       删除一个单词前面
dd       删除当前行
d3d      删除当前行向下3行
ddp      交换上下行
D        删除到行尾

yiw      拷贝当前光标一个单词,不包空白
yaw      拷贝当前光标一个单词,包括空白
diw      删除当前光标一个单词,不包空白字符
daw      删除当前光标一个单词,包括空白字符
 
/char     搜索 char 的字符串(如果搜索出多个匹配,可按n键到下一个)
/\<char\> 搜索单个次char,充分使用\< \>进行过滤。

n         向下搜索匹配词
N         向上搜索匹配词
* #       匹配光标当前所在的单词,*移动光标到下一个 #上一个匹配单词

u        撤销
Ctrl+r   恢复

%        跳转到配对的括号去
[[       跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
][       跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)
]]       跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)

MyNewKeyboard

返回目录

|---------+----------|-----------|--------------------------+
|mode nvi:| New key  | Old key   |         Cmd              |
|---------+----------|-----------|--------------------------+
|         |  C-F12   |           | 更新csope tags库         |
|         |    F9    |  :AV      | 切换.h与.c文件           |
|         |   :vs ./ |           | 打开文件树窗口 同wm      |
|         |    F6    |           | 开/关QuickFix窗口        |
|         |    F7    |           | QuickFix 前一项          |
|         |    F8    |           | QuickFix 后一项          |
|         |   wm     |           | 开/关 Tag_List窗口       |
|         |   wv     | <C-w>v    | 垂直分割窗口             |
|         |   ws     | <C-w>s    | 水平分割窗口             |
|         |   wc     | <C-w>c    | 关闭当前窗口             |
|         |   wo     | <C-w>o    | 单窗口显示               |
|         |   wh     | <C-w>h    | 跳到左边窗口             |
|         |   wj     | <C-w>j    | 跳到下边窗口             |
|         |   wk     | <C-w>k    | 跳到下边窗口             |
|         |   wl     | <C-w>l    | 跳到右边窗口             |
| n v     | tab      | %         | tab替换 %                |
|---------+----------|-----------|--------------------------+

mapleader

返回目录

mapleader (,)
+----------|----------------------|--------------------------+
| New key  | Old key              |         Cmd              |
+----------|----------------------|--------------------------+
|   ,y     | "*y                  | 复制到系统复制板         |
|   ,p     | "*p                  | 粘贴  系统复制板         |
|   ,P     | "*P                  | 粘贴  系统复制板         |
|   ,v     | <C-q>                | 可视块选择               |
|   ,ff    |:cs find f            | 打开文件                 |
|   ,fe    |:cs find e            | 查找字符串出现所以位置   |
|   ,fg    |:cs find d            | 跳至定义位置             |
|   ,fs    |:cs find s            | 查找当前词出现所以位置   |
|   ,wa    |:wall<cr>             | 保存所以文件             |
|   ,wf    |:w!<cr>               | 保存当期文               |
|   ,lf    |:LUTags<cr>           | 查找指定文件 使用技巧.c文件使用demopr搜索 .h文件使用 _demo搜索
|   ,ll    |:LUBufs<cr>           | 查找缓存字符             |
|   ,lw    |:LUWalk<cr>           | 查找目录结构             |
+----------|----------------------|--------------------------+

Alt

返回目录

mode nvi: New key Old key Cmd
n <A-y> yiw 复制当前光标单词
n <A-p> vim"0p 替换当前光标单词
: <A-h> Left 命令模式光标左移
: <A-l> Righ 命令模式光标右移
: <A-j> Down 命令模式下一条历史
: <A-k> UP 命令模式上一条历史
nvi <A-j> <ESC>:w!<cr> 编辑模式退出并保存修改
n <A-=>   将{改到上一行尾部
n <A-u>   开关{("'字符自动配对
n <A-m> MyWrap 开关自动换行

Ctrl

返回目录

mode nvi: New key Old key Cmd
n <C-h> :ver res+1 调节窗口大小
n <C-l> :ver res-1 调节窗口大小
nv <C-f> <C-f> 下一页
nv <C-b> <C-b> 上一页

iab

返回目录

cab

返回目录

* vimrc
+-------------|--------------------------------+
|    缩写     |    完整                        |
+-------------|--------------------------------+
| path/\      | s/\//\\/g                      |
| path\/      | s/\\/\//g                      |
| lookupfile  |filenametags                    |
| ecfg        |:ed $VIM/_vimrc<cr>             | 编辑配置文件
| scfg        |:so $VIM/_vimrc<cr>             | 载入配置文件
| bin         |:%!xxd -g 1                     | 二进制显示文件
| char        |:%!xxd -r                       | 字符显示文件
| vs ./       |:vs ./                          | 打开文件树窗口
| utf8        |:set fileencoding=utf-8         | 将文件编码格式转为utf-8
| cp9         |:set fileencoding=cp936         | 将文件编码格式转为cp936
| line        |:IndentLinesToggle              | 开关代码辅助竖线
| sort n      |升序排序                        |
| sort! n     |反序排序                        |
+-------------|--------------------------------+

*Prj.vim
+-------------|-------------+
|    缩写     |    完整     |
+-------------|-------------+
+-------------|-------------+

MyUserCmd

返回目录

|--------------------------+----------------------
| 命令                     | 操作功能             
|--------------------------+----------------------
| @: 3@: :<Ctrl-r>:        |执行最近一次命令      
| <C-r>0                   |: / ? 输入复制字符串  
| <C-]>                    |跳转进入函数 变量 定义
| <C-o>                    |返回跳转函数 变量 定义
| <C-i>                    |执行上次Ctrl + ]
| yiw                      |复制当前光标下的词    
| diw                      |删除当前光标下的词    
| cib ci( ci{ ci" ci'      |删除指定区域进入插入模式
| dab di( di{ ci" ci'      |删除指定区域
| ddp                      |交换上下行            
| gd                       |跳转到当前函数局部变量定义处  
| gD                       |跳转到当前文件全局变量定义处  
| gg                       |跳转到首行            
| G                        |跳转到末行            
| nG                       |跳转到第n行           
| 0                        |跳转到行首
| $                        |跳转到行尾
| _                        |跳转到行首非空字符    
| g_                       |跳转到行未非空字符    
| <C-w>n|                  |调整窗口水平为n宽     
| <C-w>n_                  |调整窗口垂直为n高     
| <C-w>H/J/K/L             |移动当前窗口的位置    
| [[                       |移动上一个函数{位置   
| []                       |移动上一个函数}位置   
| ]]                       |移动下一个函数{位置   
| ][                       |移动下一个函数}位置   
| *                        |向前搜当前字符        
| #                        |向后搜当前字符        
| .                        |重复执行上一次操作    
| :marks                   |显示标签信息          
| :reg                     |显示寄存器信息        
| :map                     |查看所以快捷映射表
| :imap                    |查看编辑模式所以快捷映射表
| :nmap                    |查看普通模式所以快捷映射表
| :vmap                    |查看可视模式所以快捷映射表
| :cmap                    |查看命令模式所以快捷映射表
| :iab                     |查看编辑模式所以字符映射表
| :cab                     |查看命令模式所以字符映射表
| "0p "1p                  |粘帖前n次寄存值       
| '.                       |到当前文件最后改动位置
| gg=G                     |当前文件所以行自动对齐
| <Ctrl-o>                 |临时退出插入模式执行1个命令后自动返回插入模式
| zM                       |启动折叠
| za                       |开启/关闭当前折叠
| zi                       |开启/关闭全部折叠(不会折叠zo打开的代码部分可使用zm)
| zj                       |下一个折叠处
| zk                       |上一个折叠处
| mm                       |标记/取消可视标签 配合F2进行跳转可视标签
| m + 大写字母             |全局标记
| “ + 大写字母             |跳转到全局标记
| f F + char               |使用F f命令在行内进行快速移到到指定字符上
| ;                        |重复F f命令在行内进行快速移到到指定字符上
| :nb :bn                  |快速打开缓存区编号为n的文件 :2b<CR>
| :ls                      |查看缓存文件及对应编号
|--------------------------+----------------------