VimL:如何通过缓冲区名称知道Vim在哪个缓冲区中

时间:2012-12-04 15:41:41

标签: vim vim-plugin

我正在修改我喜欢的插件,以满足我的需求。在VimL的限制范围内,我遇到了我需要知道的缓冲区问题。

我需要能够通过名称引用缓冲区,具体来说我需要知道我何时在Vim自己的[Command Line]缓冲区内。使用q:q/q?可以实现哪种BTW。

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

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

我想知道的是当我进入这个特定的缓冲区时,称为[Command Line],当我进入它时不使用相对行号。

感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:5)

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

此外,您可以使用寄存器%获取当前缓冲区中的文件名:

let current_file = @%

答案 1 :(得分:2)

您可以在创建命令行窗口时检查Vim设置的一些选项。

  1. 创建此文件和目录:

    ~/after/ftpugin/vim.vim
    

    当您使用相应的filetype编辑文件时,您在此文件中的内容仅由Vim执行。

  2. 将以下自解释代码添加到该文件中:

    if &buftype == "nofile"
      setlocal number
    endif
    
  3. 这里有效。我认为您可以通过添加&filetype == "vim"轻松地根据您的需求进行调整。