【问题标题】:custom AutoClose vim plugin自定义 AutoClose vim 插件
【发布时间】:2012-03-15 19:04:13
【问题描述】:

我正在使用 Vim 的 AutoClose 插件,我正在尝试添加我自己的自定义功能,该功能将用 %> 关闭我的 <% 但现在当它关闭时,我的光标被放置在 @ 中间987654325@ 和 > 因此我必须用箭头键返回。有谁知道如何解决这一问题?现在我在autoclose.vim 文件中有这一行:

let s:charsToClose = {"<% ": " %>", "<%= ": " %>"}

我正在使用 Thiago Alves 的 AutoClose 插件,在这里可以找到:http://www.vim.org/scripts/script.php?script_id=2009

【问题讨论】:

  • 哪个自动关闭?有几个,有些名称相同。
  • 我认为向左移动 1 个字符是硬编码的(参见第 75 行),但您需要向左移动 2 个字符。您可以添加一个 if-else 来查看替换对的右成员是由 2 个字符还是 1 个字符组成。
  • @romainl 我试图弄乱这个文件,但无法让它向后移动两行,你知道怎么做吗?

标签: vim auto-close


【解决方案1】:

这有点粗糙,但在这里可以工作。

将您的配对添加到后

let s:charsToClose = {'(': ')', '{': '}', '[': ']', '"': '"', "'": "'","<% ": " %>", "<%= ": " %>"}

将第 75 行更改为:

let l:result .= s:charsToClose[a:char] . "\<Left>"

到:

if len(a:char) > 1
    let l:result .= s:charsToClose[a:char] . "\<Left>\<Left>\<left>"
else
    let l:result .= s:charsToClose[a:char] . "\<Left>"
endif

【讨论】:

  • 也许是let l:result.=s:charsToClose[a:char].repeat("\&lt;Left&gt;", len(split(a:char, '\v.@=')))
  • 顺便说一句,latest development version 根本没有s:charsToClose 变量,并且引用脚本的脚本页面描述了g:AutoClosePairs。但是,在使用具有相同内容的 g:AutoClosePairs 时,插件确实有另一个错误。
猜你喜欢
  • 2023-03-26
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多