【问题标题】:vim:Can braces auto complete in java file as elegant as lisp file with slimv?vim:大括号可以在 java 文件中自动完成,就像带有 slimv 的 lisp 文件一样优雅吗?
【发布时间】:2013-02-20 07:48:26
【问题描述】:

我已经使用 slimv 很长时间了,发现它在大括号自动完成方面很棒。

但是,当我在编辑 java 文件时,我试图在我的 vimrc 中添加这段代码

"Add the closing brace only at the end of the line
function! ConditionalPairMap(open, close)
  let line = getline('.')
  let col = col('.')
  if col < col('$') || stridx(line, a:close, col + 1) != -1
    return a:open
  else
    return a:open . a:close . repeat("\<left>", len(a:close))
  endif
endf
inoremap <expr> ( ConditionalPairMap('(', ')')
inoremap <expr> { ConditionalPairMap('{', '}')
inoremap <expr> [ ConditionalPairMap('[', ']')

这不像 slimv 那样聪明。

slimv 是否支持 java 文件?

【问题讨论】:

  • 不,slimv(实际上是 paredit.vim)不支持 java 文件。它只支持类似 lisp 的文件(lisp、clojure、scheme、racket)。它是为处理 s 表达式而实现的。
  • @TamasKovacs 对使用 vim 作为编辑器的 java 程序员有什么建议吗?
  • 对不起,我对 java 没有任何建议。我是 slimv 的作者,所以我可以帮助您解决与 slimv 相关的问题。我可以告诉你的是,你不能对 java 文件使用 slimv,因为它会检查是否存在格式良好的 s 表达式。

标签: vim slimv


【解决方案1】:

试试Vim-autoclose。可能适用于 Java。

我已经使用了一段时间了。它非常适合 PHP 和 JS。粘贴代码时只是偶尔出现问题。但通过删除文件末尾的一堆右括号很容易解决。

【讨论】:

    【解决方案2】:

    有几个插件可以自动关闭大括号,并且可能比您的简单映射更强大。有关插件的讨论和列表,请参阅主题 Automatically append closing characters on the Vim Tips Wiki。

    【讨论】:

    • 其实我上面的vimrc设置是从你建议的网站复制过来的:)
    • 然后看看插件部分。我个人使用 Karl Guertin 的 AutoClose(很少,但还没有发现任何问题)。
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2015-01-14
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多