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

时间:2012-12-08 17:50:48

标签: vim alignment indentation

代码硬包装。我已经将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

但我运气不好。

1 个答案:

答案 0 :(得分:1)

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

  

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

所以,:set fo-=c应该可以解决问题。