3

我是很长时间的kate用户切换到vim.

想知道是否vim有一个易于激活的选项(或者它已经被编码为一个插件)在编码主要语言时“智能地”将静态自动换行应用于大字符串:C/C++、Java、Python、PHP,(更多关注)。

不仅在写作时,而且在对可视文本块应用缩进修改或(取消)评论时。让我们有一个伪 Java 的情况,例如:

  1         String loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipi" +
  2                         "sicing elit, sed do eiusmod tempor incididunt ut " +
  3                         "labore et dolore magna aliqua. Ut enim ad minim v" +
  4                         "eniam, quis nostrud exercitation ullamco laboris " +
  5                         "nisi ut aliquip ex ea commodo consequat. Duis aut" +
  6                         "e irure dolor in reprehenderit in voluptate velit" +
  7                         " esse cillum dolore eu fugiat nulla pariatur. Exc" +
  8                         "epteur sint occaecat cupidatat non proident, sunt" +
  9                         " in culpa qui officia deserunt mollit anim id est" +
 10                         " laborum.";
  ~

在某些时候想要添加或删除一些缩进级别,但依靠编辑器使用我们的静态自动换行规则重建整个语言提供的字符串。现在假设由于某种原因需要删除两个缩进空间,所需的输出将是:

  1       String loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipisi" +
  2                       "cing elit, sed do eiusmod tempor incididunt ut labo" +
  3                       "re et dolore magna aliqua. Ut enim ad minim veniam," +
  4                       " quis nostrud exercitation ullamco laboris nisi ut " +
  5                       "aliquip ex ea commodo consequat. Duis aute irure do" +
  6                       "lor in reprehenderit in voluptate velit esse cillum" +
  7                       " dolore eu fugiat nulla pariatur. Excepteur sint oc" +
  8                       "caeact cupidatat non proident, sunt in culpa qui of" +
  9                       "ficia deserunt mollit anim id est laborum.";
  ~

这是由哪个工具构建的vim

4

1 回答 1

1

使用 Vim,gq命令重新格式化行;这甚至可以在键入时使用:set formatoptions+=a.

不幸的是,Vim 的内置功能仅限于基本的东西(请参阅 参考资料:help fo-table);精细的和特定于语言的格式化程序旨在由外部程序 ( 'formatprg') 或 Vimscript ( 'formatexpr') 提供,后者我还没有真正看到使用过。

所以,如果你幸运的话,你会找到一个可以集成的外部代码格式化程序,或者你必须自己编写这样的东西。

于 2013-09-04T15:20:49.840 回答