2012-12-04 154 views
1

我目前正在修改一个我喜欢的插件,以满足我的需要。在VimL的限制之内,我遇到了我需要知道我处于什么缓冲区的问题。VimL:如何通过缓冲区名称知道Vim在哪个缓冲区中

我需要能够通过名称来引用缓冲区,具体而言,我需要知道当我处于Vim自己的[Command Line]缓冲区内时。顺便说一下,你可以使用q:,q/q?来实现。

我修改插件如下:https://github.com/jeffkreeftmeijer/vim-numbertoggle

这是我的叉:https://github.com/Greduan/vim-numbertoggle

我想做的事,当我在这个特定的缓冲是被知道,被称为[Command Line]而不是当我在它的时候使用相对的行号。

感谢您提供任何帮助!

+3

'echo bufname('')'是否足以满足您的需求? –

+0

@EarlGray可能,我会阅读它的文档并告诉你。 :) – greduan

+0

另外,你总是可以使用寄存器'%'查找当前文件的名称:':echo @%' –

回答

2

你可以检查的Vim设置一些选项时,它会创建命令行窗口。

  1. 创建这个文件和目录:

    ~/after/ftpugin/vim.vim 
    

    你在这个文件放在什么的Vim当您编辑文件与相应filetype时,才会执行。

  2. 以下不言自明的代码添加到该文件:

    if &buftype == "nofile" 
        setlocal number 
    endif 
    

它的工作原理,在这里。我认为您可以通过添加&filetype == "vim"轻松地将其适应您的需求。

+0

工作正常!非常好,谢谢!我使用了以下内容:https://github.com/Greduan/vim-numbertoggle/blob/683963eb3e7189eeafe1f5712d8b108342cefeb0/after/ftplugin/vim.vim – greduan

+0

让我更新该URL:https://github.com/Greduan/vim_number-toggle /blob/683963eb3e7189eeafe1f5712d8b108342cefeb0/after/ftplugin/vim.vim – greduan

5

使用带空字符串的vimscript函数bufname('')(有关详细信息,请参见:help bufname())。要获取缓冲区的编号,请使用bufnr('')

另外,还可以使用注册%当前缓冲区获取文件的名称:

let current_file = @%