2012-12-04 229 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 = @%