帮助文本缓冲区中的自定义映射

时间:2015-06-13 16:28:16

标签: vim

我倾向于不在Vim中使用很多窗口(我更喜欢制表符),但有些东西使用它们,例如帮助文本缓冲区。我对此很好,但由于我很少使用Windows,通常需要一秒时间才能记住如何关闭窗口(<C-w>c)并回到我正在做的事情。因此,我想在我的vimrc中添加一行,映射q以关闭窗口,仅当窗口是帮助缓冲区时。

我已经为netrw windows做了类似的事情,比如:

augroup wtf_netrw
  autocmd!
  autocmd filetype netrw nnoremap <buffer> q :e#<CR>
augroup END

我尝试用filetype help做类似的事情:

:autocmd filetype help nnoremap <buffer> q <C-w>c

但它没有用 - 在帮助文本缓冲区中键入q只是执行默认的q操作,录制宏。

当我尝试:nnoremap q <C-w>c时,在帮助文本缓冲区中键入q将按预期关闭窗口。

是否有一种特殊的方法来添加仅在帮助文本缓冲区中起作用的映射?

2 个答案:

答案 0 :(得分:3)

我使用的是这样的东西(我认为借用了Junegunn的vimrc):

augroup vimrc
    autocmd!
    autocmd BufEnter *.txt call s:at_help()
    ...
augroup END

" special actions for help files
function! s:at_help()
    if &buftype == 'help'
        " enable 'q' = quit
        nnoremap <buffer> q :q<cr>
    endif
endfunction

答案 1 :(得分:3)

将此文件放入文件~/.vim/ftplugin/help.vim

nnoremap <silent> <buffer> q :q<CR>