无人小站

Vim 给特定文件增加功能以及菜单

JP-Liu Vim

给特定文件增加 Vim 功能以及菜单

由于维护 uBlock Origin 和 Subconverter 等规则,在 Vim 中打开特定文件时,常常需要使用特定功能,但使用 autocmd 命令增加热键后,易遇到同时打开多个文件时,autocmd 功能加载后冲突的问题,于是趁着有空,增加了一个 Function,用于在打开特定文件时,添加特定功能热键,并显示热键菜单避免忘记。

" Special Setting {{{1
function! SpecialSetting()
    let file_name = expand('%')
    silent! aunmenu 特定(&P)
    if file_name =~ 'AreaProxy.*\.list' || file_name =~ 'Extra.*\.list'
        source $VIM\vimconf\vim-special\autocmd-Subconverter-List.vim
    else
    if file_name == 'RegexDeleteRule.list'
        nnoremap <silent> <buffer> <F6> :silent source $VIM\vimconf\vim-special\script-RegexDeleteRule-removehttp.vim<cr>
        amenu <silent>特定(&P).F6-RemoveHttp <nop>
    else
    if file_name =~ 'Liu.s-Clear-List\.list'
        nnoremap <silent> <buffer> <F6> :silent source $VIM\vimconf\vim-special\script-Liu's-Clear-List-removeparam.vim<cr>
        amenu <silent>特定(&P).F6-RemoveParam <nop>
    else
    if file_name =~ '.*\.md' || file_name =~ '.*\.mkd'
        nnoremap <silent> <buffer> <F6> "=strftime("%Y-%m-%d %H:%M:%S")<CR>gP
        amenu <silent>特定(&P).F6-输入当期时间 <nop>
    else
    if file_name =~ '.*\.avs' || file_name =~ '.*\.avsi'
        nnoremap <silent> <buffer> <F6> :silent !Start D:\1-Program\MPC-HC\mpc-hc.exe "%:p"<cr>
        amenu <silent>特定(&P).F6-Preview <nop>
     endif | endif | endif | endif | endif
endfunction
autocmd BufEnter * call SpecialSetting()

实际效果如下图,基本满足了我个人的需要,如有需要可参考:

效果

JP-Liu
懒人一个