2016-11-07 5 views
0
" 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.Autocmd in vim не вызывает функцию

Я только что нашел, что если я открываю скрипт из командной строки, как vim test.py, он не работает. Но если я просто открою vim, а затем выполним :e test.py, функция вызывается.

ответ

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$)^[ 

и назвать его в день.