我想创建一个映射,该映射将根据光标之前的字符更改 ins-completion。如果字符是{
然后我想要标签完成,如果它:
我想要正常完成(这取决于完整选项)并且如果字符是反斜杠加上一些单词(\w+
)我想要字典完成。我的ftplugin/tex/latex_settings.vim
文件中有以下内容:
setlocal dictionary=$DOTVIM/ftplugin/tex/tex_dictionary
setlocal complete=.,k
setlocal tags=./bibtags;
function! MyLatexComplete()
let character = strpart(getline('.'), col('.') - 1, col('.'))
if character == '{'
return "\<C-X>\<C-]>"
elseif character == ':'
return "\<C-X>\<C-N>"
else
return "\<C-X>\<C-K>"
endif
endfunction
inoremap <C-n> <c-r>=MyLatexComplete()<CR>
这不起作用,我不知道如何解决它。
编辑:这似乎可行,但我想要一个条件来检查 \w+ (反斜杠加上任何单词)和最后一个给出消息“未找到匹配项”的条件。
function! MyLatexComplete()
let line = getline('.')
let pos = col('.') - 1
" Citations (comma for multiple ones)
if line[pos - 1] == '{' || line[pos - 1] == ','
return "\<C-X>\<C-]>"
" Sections, equations, etc
elseif line[pos - 1] == ':'
return "\<C-X>\<C-N>"
else
" Commands (such as \delta)
return "\<C-X>\<C-K>"
endif
endfunction