1

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

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

" 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

但我运气不好。

4

1 回答 1

1

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

a 段落的自动格式化。每次插入或删除文本时,都会重新格式化段落。见 |自动格式化|。当存在“c”标志时,这只发生在已识别的评论中。

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

于 2012-12-08T20:11:42.183 回答