Vim脚本中的代码硬包装和高级缩进/对齐

问题描述 投票:1回答:1

代码硬包装。我已经将Vim配置为自动(当我键入)在80列上硬包装长行注释。效果很好。但是,它似乎不会自动包装代码。我认为添加set formatoptions+=t(目前我有set formatoptions=c,r,q,a,n)可以做到这一点,但事实并非如此。另外,在Vim Script中,如果由于硬包装而需要续行时,Vim可以自动反斜杠\。那么有没有办法实现代码和这些高级功能的硬包装?

高级缩进/对齐。我喜欢使用gg=G - 我甚至将它作为写入文件的预挂钩附加。我启用了cindent。现在我想知道是否可以编写indentexpr或者调整一些其他变量来实现Vim Script代码的以下内容,例如:

" Before gg=G
let g:SuperTabNoCompleteAfter = ['^', '\s', ',', '(', ')', '[', ']', '{',
  \'}', '<', '>', '''', '"']

" After gg=G
let g:SuperTabNoCompleteAfter = ['^', '\s', ',', '(', ')', '[', ']', '{',
                                \'}', '<', '>', '''', '"']

我尝试将vim.vim文件添加到~/.vim/after/ftplugin/中,其中包含以下内容:

setlocal indentexpr=IndentExpression()

fun IndentExpression()
  let indent = cindent(v:lnum)
  let match = matchstr(getline(v:lnum - 1), '^\s*\S\+\s\+\S\+\s*=\s*\[\ze.*$')

  if !empty(match)
    let indent = len(match)
  endif

  return indent
endf

但我运气不好。

vim alignment indentation
1个回答
1
投票

关于'formatoptions':当你在那里有a时,没有必要使用t;前者会在您键入时自动换行,因此无论如何都会在达到文本宽度时(后者执行)换行。造成问题的原因是c,因为这会将自动格式限制为注释。 CP。 :help fo-table

a段落的自动格式化。每次插入或删除文本时,段落都将被重新格式化。见| auto-format |。当'c'标志出现时,这仅发生在已识别的注释中。

所以,一个:set fo-=c应该做的伎俩。

© www.soinside.com 2019 - 2024. All rights reserved.