首先,一个免责声明:我不知道是否应该把它放在这里或vim
。但我希望这里有很多人共同点。
我在用异步运行编译我的所有项目和文件,对于这个问题,我在使用 LaTex 时遇到了问题。我的 AsyncRun 是:
" AsyncRun {{{
" Quick run via <F10>
nnoremap <F10> :call <SID>compile_and_run()<CR>
inoremap <buffer> <F10> <Esc> :call <SID>compile_and_run()<CR>
function! s:compile_and_run()
exec 'w'
if &filetype == 'c'
exec "AsyncRun! gcc % -o %<; time ./%<"
elseif &filetype == 'fortran'
exec "AsyncRun! gfortran -Wall % -o %<; time ./%<"
elseif &filetype == 'tex'
exec "AsyncRun! latexmk -pdflatex=lualatex -quiet -pdf -interaction=nonstopmode -shell-escape -synctex=1 -pvc %"
elseif &filetype == 'sh'
exec "AsyncRun! time bash %"
elseif &filetype == 'python'
exec "AsyncRun! time python3 %"
endif
exec '<CR>'
endfunction
let g:asyncrun_open = 15
"}}}
我的 .vimrc 中也有:
"LaTeX: {{{
augroup FT_LaTex
autocmd BufReadPost *.tex setlocal filetype=tex
au FileType tex let b:ale_linters = ['texlab']
au filetype tex let b:ale_fixers = ['latexindent', 'remove_trailing_lines', 'trim_whitespace']
let g:tex_flavor = 'latex'
" let g:Tex_DefaultTargetFormat = 'pdf'
" let g:Tex_ViewRule_pdf = 'evince_dbus.py'
" let g:Tex_Debug = 1
" let g:Tex_DebugLog = '/tmp/vim-latex-suite.log'
au FileType tex inoremap "" ``"<++><esc>4hi
" au FileType tex nnoremap <buffer> <Leader>lm :up!<cr>:! latexmk -pdf -quiet --shell-escape %<cr>
au FileType *.tex set vim=~/bin/vims.py
au filetype tex syntax region texZone start='\\begin{minted}' end='\\end{minted}'
au filetype tex imap `/ frac<c-r>=UltiSnips#ExpandSnippet()<cr>
au filetype tex imap FBF FBF<c-r>=UltiSnips#ExpandSnippet()<cr>
au filetype tex imap FIT FIT<c-r>=UltiSnips#ExpandSnippet()<cr>
au filetype tex imap FTT FTT<c-r>=UltiSnips#ExpandSnippet()<cr>
augroup END
"}}}
现在的问题是,我期望编译后光标应该返回到我的 tex 缓冲区,但事实并非如此。它实际上粘在 quickfix 窗口中,我需要按 Esc 才能让光标返回。
如果我不使用-pvc
选项,那么它就能正常工作。