vim中的autocmd没有调用该函数

时间:2016-11-07 09:12:17

标签: python vim autocmd vim7.3

" Python logger-print and vice-versa

function! SetPrintLogMaps()
    echom "called"
    nnoremap <buffer> <Leader>lp "lyy"lp"l5cawprint^[
    nnoremap <buffer> <Leader>ll "lyy"lp"lcawself.logger.info(^O$)^[
endfunction

autocmd BufWrite,BufRead *.py :call SetPrintLogMaps()

我有这个autocmd,所以只有在读取或写入python脚本时才设置映射。但是当我打开任何python脚本时,函数没有被调用。

我刚刚发现如果我从命令行打开脚本就好了 vim test.py它不起作用。 但是,如果我只是打开vim然后执行:e test.py,则会调用该函数。

1 个答案:

答案 0 :(得分:1)

您应该使用FileType事件:

augroup myPythonStuff
    autocmd!
    autocmd FileType python call SetPrintLogMaps()
augroup END

更好,把它放在~/.vim/after/ftplugin/python.vim

nnoremap <buffer> <leader>lp "lyy"lp"l5cawprint^[
nnoremap <buffer> <leader>ll "lyy"lp"lcawself.logger.info(^O$)^[

并称之为一天。