返回上一级
返回目录
返回目录
-
在代码根目录新建 Prj.vim 文件
-
打开Prj.vim文件,并复制下面{ }中的代码到Prj.vim中
-
实际项目路径D:/Inker/Work/Model/S32F3wc/trunk/SW_S32F3_MAIN/code替换
-
使用:path\/命令将目录\改为/
-
保存Prj.vim并关闭重新打开
"头文件处 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 行
|
返回目录
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
返回目录
小写的是文件书签,可用(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 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
返回目录
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 恢复
% 跳转到配对的括号去
[[ 跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
][ 跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)
]] 跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
返回目录
|---------+----------|-----------|--------------------------+
|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 (,)
+----------|----------------------|--------------------------+
| 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> | 查找目录结构 |
+----------|----------------------|--------------------------+
返回目录
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
|
开关自动换行
|
返回目录
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>
|
上一页
|
返回目录
返回目录
* 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
+-------------|-------------+
| 缩写 | 完整 |
+-------------|-------------+
+-------------|-------------+
返回目录
|--------------------------+----------------------
| 命令 | 操作功能
|--------------------------+----------------------
| @: 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 |查看缓存文件及对应编号
|--------------------------+----------------------