vimtex:强制}和{不要跳过空行

时间:2018-08-30 12:02:00

标签: vim latex keyboard-shortcuts vim-plugin

当我使用}{时,vimtex + vim在文档中随机地跳跃,跳过了几行。见下文。

如何恢复默认的vim行为而不跳过空行?

enter image description here

2 个答案:

答案 0 :(得分:2)

查找是否有}使用的映射

:map }

现在,您可以取消映射找到的任何映射

:unmap }

如果您想将其放入.vimrc中,建议您在该插件的after目录中进行。

~/.vim/after/plugin

答案 1 :(得分:1)

简短答案

跳过是随机发生的事实表明,空行并不是真正的空。它们包含空格或其他特殊字符。

将光标移到这些“空”行,然后按$来查看它们是否真的为空。


如何避免此类问题:

(是的,其他人也有您的问题。)

让vim显示空格字符
Vim有一种显示这些字符的方法。使用set list并定义listchars。从listchars的vim帮助中:

    Strings to use in 'list' mode and for the :list command.  It is a
    comma separated list of string settings. 
    [...]
                                                    lcs-space
      space:c       Character to show for a space.  When omitted, spaces
                    are left blank.
                                                    lcs-trail
      trail:c       Character to show for trailing spaces.  When omitted,
                    trailing spaces are blank.  Overrides the "space"
                    setting for trailing spaces.

有关更多信息,请参见:help :list:help listchars


突出显示尾随空格
我总是在任何空格处都显示一个字符,这很烦人,我的眼睛也很糟糕,看不到行尾的一点(对于空格)。因此,我使用突出显示组来显示所有尾随空格字符:

" Show trailing whitespace
    highlight ExtraWhitespace ctermbg=red       " define highlight group                      
    match ExtraWhitespace /\s\+$/               " define pattern
    autocmd BufWinEnter * match ExtraWhitespace /\s\+$/         " apply match to all buffers
    autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/  " don't match while in insert 
    autocmd InsertLeave * match ExtraWhitespace /\s\+$/
    autocmd BufWinLeave * call clearmatches()                   " It's good for the RAM

自动删除尾随空格
还有一种方法可以在写入缓冲区时自动删除这些字符-但有一些注意事项(想想markdown的双尾空格用于换行符)。

Vim wiki有一个很好的解释。

最简单(但可能不是最好)的解决方案是添加

 autocmd BufWritePre * %s/\s\+$//e

访问您的.vimrc或相应的ftplugin文件。 我个人在vimrc中有一个功能,并针对不需要/不需要的文件类型禁用了该功能。


您可能还对Make { and } ignore lines containing only whitespace

感兴趣

免责声明
可能有些字符不是空格,但默认情况下vim也不会显示这些字符。我从来没有遇到过这个问题,但是我在“简短回答”下所说的内容仍然适用。