vim 如何 map 特定缓冲区 [搞定]

Vim、Emacs配置和使用
回复
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

vim 如何 map 特定缓冲区 [搞定]

#1

帖子 自由建客 » 2011-05-10 0:35

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

Re: vim 如何 map 特定缓冲区

#2

帖子 lilydjwg » 2011-05-10 1:21

这个在定义命令时已经可以了。给 Vim 打补丁吧。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何 map 特定缓冲区

#3

帖子 自由建客 » 2011-05-10 7:49

lilydjwg, :em23
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: vim 如何 map 特定缓冲区

#4

帖子 fanhe » 2011-05-10 9:59

自动命令, 把条件限制为制定 buf 的编号,
sample

代码: 全选

au! BufEntr <buffer=X> call SetupMapping()
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何 map 特定缓冲区

#5

帖子 自由建客 » 2011-05-10 14:52

fanhe, 是个思路,麻烦点,不过也只能这样了
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何 map 特定缓冲区

#6

帖子 自由建客 » 2011-05-10 21:57

fanhe, 若我是 :set ft=c 的则不行,因为尚未触发 BufEnter 事件,只能等到下一次进入该缓冲区才有效。
加一级判断,若目标缓冲区是当前缓冲区则直接映射,只有目标缓冲区非当前才用 BufEnter 事件。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim 如何 map 特定缓冲区

#7

帖子 lilydjwg » 2011-05-10 22:20

自由建客 写了:fanhe, 若我是 :set ft=c 的则不行,因为尚未触发 BufEnter 事件,只能等到下一次进入该缓冲区才有效。
加一级判断,若目标缓冲区是当前缓冲区则直接映射,只有目标缓冲区非当前才用 BufEnter 事件。
FileType 事件如何?
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何 map 特定缓冲区 [搞定]

#8

帖子 自由建客 » 2011-05-10 22:29

lilydjwg, 代码本来就在 FileType 事件里面。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim 如何 map 特定缓冲区 [搞定]

#9

帖子 lilydjwg » 2011-05-10 23:12

自由建客 写了:lilydjwg, 代码本来就在 FileType 事件里面。
好吧。。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: vim 如何 map 特定缓冲区 [搞定]

#10

帖子 fanhe » 2011-05-11 0:16

我举个例子而已, 不是非要你用 bufenter

设置文件类型的, 一般用 BufRead 和 BufNewFile 事件
还有,如果你想忽略事件, 就临时设置 ei

还有, 如果你真想强行执行自动命令, 就用 doautocmd
回复