vim 插件如何按需启用

Vim、Emacs配置和使用
回复
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

vim 插件如何按需启用

#1

帖子 自由建客 » 2010-11-13 20:08

vim 通常加载 /etc/vim/vimrc 或 ~/.vimrc ,我特别建了一个 ~/.vimide/vimrc ,vim -u ~/.vimide/vimrc 即可启用特别配置的 IDE 。
这是按需启用配置,因为我并不想每个 vim 都启用那一堆复杂的 IDE 配置,这样很好用。

安装了 vim-scripts 包,里面有很多插件,但默认一个都没有启用。
在 ~/.vim/plugin 中创建插件的链接即可启用,比如
cd ~/.vim/plugin
ln -s /usr/share/vim-scripts/plugin/minibufexpl.vim
但这样任何时候都启用了该插件。
问题,我如何只在启动我的 IDE 时启用该插件。
头像
zkwlx
帖子: 989
注册时间: 2009-10-09 12:54
系统: debian
来自: 北京某胡同
送出感谢: 3 次
接收感谢: 2 次

Re: vim 插件如何按需启用

#2

帖子 zkwlx » 2010-11-13 20:22

写个脚本,替换下VIM命令,如果启动IDE就ln,然后推出再自动删除连接,反正只是个符号连接,速度应该不会有影响 :em06
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: vim 插件如何按需启用

#3

帖子 xhy » 2010-11-13 20:28

可以用autocmd,打开文件时执行自己定义的函数,判断是不是需要载入插件
目前负债150多万
头像
zkwlx
帖子: 989
注册时间: 2009-10-09 12:54
系统: debian
来自: 北京某胡同
送出感谢: 3 次
接收感谢: 2 次

Re: vim 插件如何按需启用

#4

帖子 zkwlx » 2010-11-13 20:51

晕,直接这样不就得了 :em20

代码: 全选

alias vim="vim --noplugin"
ide="vim"
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: vim 插件如何按需启用

#5

帖子 lilydjwg » 2010-11-13 21:23

我的办法:

把不需要一直启用的插件放在其它的目录(如 ~/.vim/so),自定义个命令去 so 它们就可以了。
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: vim 插件如何按需启用

#6

帖子 自由建客 » 2010-11-13 21:38

竟然就是 source 这么简单 :em34
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: vim 插件如何按需启用

#7

帖子 xhy » 2010-11-13 21:41

自由建客 写了:竟然就是 source 这么简单 :em34
so不能自动执行,不够方便
目前负债150多万
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: vim 插件如何按需启用

#8

帖子 自由建客 » 2010-11-13 22:02

还是不明白,楼上说的 au
其实我要的就是在 vimrc 中手动指定要加载的插件
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: vim 插件如何按需启用

#9

帖子 lilydjwg » 2010-11-13 22:48

xhy 写了:
自由建客 写了:竟然就是 source 这么简单 :em34
so不能自动执行,不够方便
自动执行就放 plugin 下好了。

或者在 vimrc 里根据 v:progname 判断该 so 哪些插件。
比如给 vim 弄个叫 vide 的链接,然后在 vimrc 里判断如果 v:progname 是 vide 就 so A B C 这样子好了。
这样比 alias 好,因为 alias 只能在交互式 shell 里用。像 .desktop 文件、运行程序对话框、指定使用编辑器时都不行。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: vim 插件如何按需启用

#10

帖子 eexpress » 2010-11-13 22:52

当然是au嘛。
● 鸣学
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: vim 插件如何按需启用

#11

帖子 xhy » 2010-11-13 22:58

lilydjwg 写了:
xhy 写了:
自由建客 写了:竟然就是 source 这么简单 :em34
so不能自动执行,不够方便
自动执行就放 plugin 下好了。

或者在 vimrc 里根据 v:progname 判断该 so 哪些插件。
比如给 vim 弄个叫 vide 的链接,然后在 vimrc 里判断如果 v:progname 是 vide 就 so A B C 这样子好了。
这样比 alias 好,因为 alias 只能在交互式 shell 里用。像 .desktop 文件、运行程序对话框、指定使用编辑器时都不行。
用au有个好处,可以指定是在什么时候执行,比如BufEnter,TabEnter,BufRead等等,
或者指定au根据文件类型,自动执行相应的脚本,不需要给vim弄个别的名字,
可以根据打开的文件类型,或者其它上下文判断要载入哪些插件。
目前负债150多万
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: vim 插件如何按需启用

#12

帖子 lilydjwg » 2010-11-13 23:28

xhy 写了:
用au有个好处,可以指定是在什么时候执行,比如BufEnter,TabEnter,BufRead等等,
或者指定au根据文件类型,自动执行相应的脚本,不需要给vim弄个别的名字,
可以根据打开的文件类型,或者其它上下文判断要载入哪些插件。
Vim 有 WantIDE 事件? :em02

另外,根据打开的文件类型执行的话,我习惯放到 ftplugin 下,方便管理。
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: vim 插件如何按需启用

#13

帖子 自由建客 » 2010-11-14 0:04

我启动 IDE 用的是专门的 vimrc 文件,不用在 vimrc 中判断是不是 IDE ,只要直接写在里面就行了。目前用的两个插件基本工作正常,就是 let Tlist_Auto_Open = 1 形同虚设,还得要 TlistOpen 。

代码: 全选

so /usr/share/vim-scripts/plugin/taglist.vim
let Tlist_WinWidth = 32
let Tlist_Exit_OnlyWindow = 1
let Tlist_Auto_Open = 1
TlistOpen

so /usr/share/vim-scripts/plugin/minibufexpl.vim
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: vim 插件如何按需启用

#14

帖子 lilydjwg » 2010-11-14 14:20

自由建客 写了:我启动 IDE 用的是专门的 vimrc 文件,不用在 vimrc 中判断是不是 IDE ,只要直接写在里面就行了。目前用的两个插件基本工作正常,就是 let Tlist_Auto_Open = 1 形同虚设,还得要 TlistOpen 。
那是因为taglist是在Vim启动时才检查是否需要自动打开的。so 的时候,VimEnter 事件早已发生过了。
回复

回到 “Vim和Emacs”