[分享]个人编写的用于编写makefile的插件
======================================================================
首先要感谢ubuntu中文论坛为大家提供了这样一个可以让各位同好共同分享经验、互相学习
的地方,也要感谢emacs、vim子论坛的各个热心朋友!
现在我想我用自己编写的make.vim插件来回馈大家的帮助,谢谢!
本插件主要用来编写makefile文件,安装的时候,解压到vimfiles文件夹中即可。
使用说明如下:
======================================================================
* 本make.vim插件使用说明
author:sarrow
date:2008十一月25
tag:Mingw,Make,Makefile,tool chain,compile,vim
======================================================================
** 作者说明
(本插件不遵循什么什么协议,属于copyleft产品,可以随便使用;不过造成的任何损失,
本作者概不负责。使用copy-paste大法把部分代码用在自己的脚本中的行为也是允许的,更
欢迎广泛传播使用;不过作为整体传播的话,请各位给本作者sarrow留一点署名权。)
----------------------------------------------------------------------
** 使用说明
为方便makefile的编写,提供了模板载入、内建函数补全、链接库补全、第三方库目录补全
,MingW工具链参数补全(需改进)、模板关键字补全(替换),快捷键编译。
*** 模板载入
模板载入提供了两种用户接口
1) 菜单项
2) 命令行
菜单项见&Make>&Load Template
本作者提供了4款makefile模板,对应的快捷键就是一个<LocalLeader>外加弹出菜单对应项
的前面最多4个字符。
<LocalLeader>是vim提供的一种自定义快捷键方式。它是一串表示一个按键的字符串。vim
中,该键的默认值为“\”,本插件作者把它定为“;”,相对更好按一些。
模板载入的时候,vim会检查当前的makefile文档是否为空,为空则直接写入;非空则用一
个对话框询问;
*** 内建函数补全
当使用者插入字符“$(”后,再按<C-X><C-O>将激活本补全功能;本功能基于vim提供的
Omni补全函数。
如上,将弹出:
$(abspath ~<names...>~)
$(addprefix ~<prefix>~,~<names...>~)
$(addsuffix ~<suffix>~,~<names...>~)
$(and ~<condition1[,condition2[,condition3...]]>~)
$(basename ~<names...>~)
...
这样的列表;
注意:本补全是增量式的,即若使用者知道函数名的前面几个字符,补全窗口将弹出更少的
选项以加快选择。
为方便修改参数,还提供选区转换的功能。当利用Omni选定合适的函数后,再按<C-j>(不
要推出vim的插入模式),将依次高亮选中~<和>~之间的文字;按字符键、符号键将删除选
区内文字,并插入该字符;再按<C-j>后,将跳转到下一个选区。
*** 链接库补全
功能的启动和使用方式类上,只是前缀的字符是“-l”而非“$(”;同样支持增量式补全;
*** 第三方库目录补全
类上,前缀字符为“-I”——由于库目录形式的多样性(主要是因为可能包含符号字符),
本补全不再允许增量式补全。
不过,由于第三方库不可能太多(比如上百Orz),因此这不算缺陷。
*** MingW工具链参数补全(需改进)
当光标之前为空格;或者载缀一个减号;甚至再缀上几个字母符号,再使用<C-X><C-O>,将
启动本补全。
本补全将检查行首非空字符代表的是那一个MingW工具链中的工具,并查找内建的数据,看
有没有复合当前补全类型的参数。
缺陷:
1)支持的工具有限,仅支持windres,gcc,g++,ar这四款工具。
(欢迎同好提供参数列表,先谢过了)
2)对已经用$()的方式转换了一次的工具名,无能为力。使用了续行符的情况也是
(欢迎提供修改建议)
*** 模板关键字补全(替换)
本补全功能是实现模板载入的副产品;为了方便模板的自定义编写,提高适用性,特提供了
一些关键字,以供载入的时候进行替换。
在手动编写的时候,这些关键字同样有用。
如插入C时,在后面<C-j>,将把刚才输入的C替换为当前目录内的C文件列表。
具体支持哪些关键字,见后面的列表。
*** 快捷键编译
=======================+===============================================
快捷键 | 对当前makefile文件执行的命令
-----------------------+-----------------------------------------------
<LocalLeader>ma | make -f % all 命令行参数
<LocalLeader>mr | make -f % release 命令行参数
<LocalLeader>md | make -f % debug 命令行参数
<LocalLeader>mc | make -f % clean 命令行参数
<LocalLeader>mp | make -f % depends 命令行参数
<LocalLeader>mg | 设置当前makefile所需的命令行参数
=======================+===============================================
说明,上表中的“%”表示当前makefile文件名
======================================================================
** 本插件文件列表以及说明
ftplugin
│ make.vim => 主体脚本文件
│ make.vim.readme => 本说明文档
│
└─make_res => 资源文件夹
3rd_part_library_dir.lst=> 第三方库目录入口;用于-I模式补全
functions.mak => make函数列表文件;用于Omni补全
make.console.mak => 当前及以下3个文件是本作者提供的
make.dynamic_lib.mak 4款makefile模板文件;分别提供
make.static.lib.mak 控制台、动态链接库、静态打包以及
make.win.mak win32qui程序的编译
mingw.lib.lst => 第三方库文件;用于-l模式补全
*** 3rd_part_library_dir.lst
其中3rd_part_library_dir.lst内有较详细的注释说明,要添加自己的库目录,请阅读之。
*** functions.mak
functions.mak中也用了注释进行说明;要修改选区标记符号、或者要添加自定义的宏函数,可
以根据说明自行修改。
*** template中模板关键字列表以及说明:
4款模板文件中使用了一些类似软景网页制造机的关键字,以便在载入模板的时候进行替换。这些
不好写在注释中,因此添加、修改模板的说明,就在这里单独提出来。
===============+============================
关键字名 |说明
---------------+----------------------------
$C$ |c源文件列表
$CPP$ |c++源文件列表
$RES$ |res资源文件列表
$SRC$ |所有的源文件
$H$ |c头文件列表
$HPP$ |c++头文件列表
$HH$ |C/C++头文件列表
$ALL$ |所有的文件列表
$DATE$ |当前时间
$DIRNAME$ |父文件夹名字
$FNAME$ |当前makefile文件全名
$FNAME_NO_EXT$ |makefile文件的无后缀名
$FNAME_EXT$ |makefile文件后缀
$CWP$ |当前工作目录
===============+=============================
注意:模板文件中的关键字前后添加了dollar符;手动编写makefile文件的时候,要使用这
些替换功能,就不用添加这个符号,直接C<C-J>,DATE<C-J>就OK了。
======================================================================
** 几点问题
*** 如何本插件的资源文件,以达到自定义化?
本插件在编写的时候尽量考虑到用户的使用习惯上可能的不同,因此很多参数快捷键都可以
自行修改,需要对补全弹出的条目的内容进行修改、添加也很方便。
具体操作见前面 《本插件文件列表以及说明》,并仔细阅读附带的资源文件中的说明。
*** 如何添加用户自己编写的makefile模板?
模板文件的添加、修改、重命名同样比较自由。当添加新模板的时候,只需要让模板文件创
建在make_res文件夹下面,名字符合下面的格式:
mingw.*.mak
即可,本make.vim脚本会自行添加(需要重启vim);
*** 快捷键与makefile模板文件的关系?
当编辑makefile文件的时候,可以使用快捷键进行载入模板文件,自定义的模板也如此。快
捷键的规则为:
<LocalLeader>所需载入的模板文件名第一、二个小数点之间部分的前面至多4个字符
呵呵,说得这么麻烦,不知道看得懂不?
其实很简单。以下面几个由作者提供的模板为例:
make.dynamic_lib.mak <LocalLeader>dyna
make.static.lib.mak <LocalLeader>stat
make.win.mak <LocalLeader>win
<LocalLeader>是某键位的占位符,vim系统默认是“/”键,本作者把它修改为了“;”,即
在正常的命令模式下,依次按
;dyna
着5个键,将载入模板文件
make.dynamic_lib.mak
并自动替换其中使用的模板关键字。
同理,按“;win”,将载入make.win.mak
======================================================================
如有疑问及建议、以及错误列表,请在本帖后面回复,谢谢。有暇即阅。
[分享]个人编写的用于编写makefile的插件
-
- 帖子: 403
- 注册时间: 2007-10-27 1:04
[分享]个人编写的用于编写makefile的插件
- 附件
-
- make.rar
- 本make.vim插件
- (16.08 KiB) 已下载 78 次
-
- 帖子: 403
- 注册时间: 2007-10-27 1:04
Re: [分享]个人编写的用于编写makefile的插件
呵呵,本来在vim中还好好的格式,贴到论坛就走样啰!
-
- 帖子: 147
- 注册时间: 2008-02-20 9:43
- 来自: Wuhan