vim 如何 map 特定缓冲区 [搞定]
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
vim 如何 map 特定缓冲区 [搞定]
变量获取和设置可通过 getbufvar() setbufvar() 搞定,但 :map 没有解决。
:map <buffer> 只能是当前缓冲区,而不能指定某个非当前缓冲区,有别的办法不?
要是 :exe 能指定缓冲区参数就无敌了。初步思路,用 :bufdo 封装一个为特定缓冲区执行命令的命令,但这很变态。
:map <buffer> 只能是当前缓冲区,而不能指定某个非当前缓冲区,有别的办法不?
要是 :exe 能指定缓冲区参数就无敌了。初步思路,用 :bufdo 封装一个为特定缓冲区执行命令的命令,但这很变态。
上次由 自由建客 在 2011-05-10 22:05,总共编辑 2 次。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim 如何 map 特定缓冲区
这个在定义命令时已经可以了。给 Vim 打补丁吧。
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: vim 如何 map 特定缓冲区
lilydjwg, 

- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: vim 如何 map 特定缓冲区
自动命令, 把条件限制为制定 buf 的编号,
sample
sample
代码: 全选
au! BufEntr <buffer=X> call SetupMapping()
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: vim 如何 map 特定缓冲区
fanhe, 是个思路,麻烦点,不过也只能这样了
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: vim 如何 map 特定缓冲区
fanhe, 若我是 :set ft=c 的则不行,因为尚未触发 BufEnter 事件,只能等到下一次进入该缓冲区才有效。
加一级判断,若目标缓冲区是当前缓冲区则直接映射,只有目标缓冲区非当前才用 BufEnter 事件。
加一级判断,若目标缓冲区是当前缓冲区则直接映射,只有目标缓冲区非当前才用 BufEnter 事件。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim 如何 map 特定缓冲区
FileType 事件如何?自由建客 写了:fanhe, 若我是 :set ft=c 的则不行,因为尚未触发 BufEnter 事件,只能等到下一次进入该缓冲区才有效。
加一级判断,若目标缓冲区是当前缓冲区则直接映射,只有目标缓冲区非当前才用 BufEnter 事件。
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: vim 如何 map 特定缓冲区 [搞定]
lilydjwg, 代码本来就在 FileType 事件里面。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim 如何 map 特定缓冲区 [搞定]
好吧。。自由建客 写了:lilydjwg, 代码本来就在 FileType 事件里面。
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: vim 如何 map 特定缓冲区 [搞定]
我举个例子而已, 不是非要你用 bufenter
设置文件类型的, 一般用 BufRead 和 BufNewFile 事件
还有,如果你想忽略事件, 就临时设置 ei
还有, 如果你真想强行执行自动命令, 就用 doautocmd
设置文件类型的, 一般用 BufRead 和 BufNewFile 事件
还有,如果你想忽略事件, 就临时设置 ei
还有, 如果你真想强行执行自动命令, 就用 doautocmd