Vim-Latex:双引号自动替换

Vim-Latex:双引号自动替换

我使用带有 Vim-Latex 插件的 Vim 来编辑我的 LaTeX 文档。我遇到的问题是,每当我想插入双引号 (") 时,它都会自动被替换为 (``)。有什么办法可以在启用 Vim-Latex 的同时禁用此功能吗?

答案1

添加(如果需要let g:Tex_SmartKeyQuote=0$VIM/ftplugin/tex.vim创建该文件),其中 $VIM 对应于 unixy 操作系统的 ~/.vim 和 Windows 的 ~/vimfiles。

还有更多配置变量,请参阅latexsuite 手册

答案2

我通常会输入\",因为在这种情况下"不会被“智能引号”替换,然后删除\。这对我来说已经足够方便了,因为我很少需要这个"字符,而且我不想改变 Vim-LaTeX 的默认行为。

答案3

我知道您已经接受了答案,但对于那些使用 vim 来处理 LaTeX,但(像我一样)不使用 Vim-LaTeX 插件的人,我使用以下内容,我将其放在我的个人 $HOME/.vim/ftplugin/tex.vim 中。它可以很好地处理引号(至少对我来说是这样),并在注释和 \ 之后停用自身。我从一些代码开始“auctex.vim”插件,但我自己添加了很多内容并对其进行了大量定制。

" Function for smart-quotes: double
function! s:TexQuotes()
    if getline('.')[0:col(".")] =~ '\(^\|[^\\]\)%'
       let kinsert = "\""
    else
        let kinsert = "\'\'"
        let left = getline('.')[col('.')-2]
        if left =~ '^\(\|\s\|{\|(\|\[\|&\)$'
            let kinsert = "\`\`"
        elseif left == "\\"
            let kinsert = "\""
        endif
    endif
    return kinsert
endfunction
" mapping for quotation marks
inoremap <buffer> " <C-R>=<SID>TexQuotes()<CR>
" Function for smart-quotes: single
function! s:TexSingQuotes()
    if getline('.')[0:col(".")] =~ '\(^\|[^\\]\)%'
       let schminsert = "'"
    else
        let schminsert = "'"
        let left = getline('.')[col('.')-2]
        if left =~ '^\(\|\s\|{\|(\|\[\|&\)$'
            let schminsert = '`'
        endif
    endif
    return schminsert
endfunction
" mapping for single quotation mark
inoremap <buffer> ' <C-R>=<SID>TexSingQuotes()<CR>

这可能需要稍微整理一下。这是我在第一次学习我所知道的一点点 vimscript 语言时写的。

你也许会用到它旁边vim-latex 插件,只要你禁用它的智能引用功能,但我还没有尝试过。

相关内容