【问题标题】:skip over closing parentheses in vim跳过vim中的右括号
【发布时间】:2012-04-23 05:33:40
【问题描述】:

我想设置 vim,如果我在右括号上按制表符,它会向右移动光标。这在与自动完成括号一起使用时很有用。

这是我目前所拥有的(不起作用):

inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == "}" ? "\<Right>" : "\<Tab>"
inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : "\<Tab>"
inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == "]" ? "\<Right>" : "\<Tab>"

我做错了什么?

【问题讨论】:

  • 当你按下关闭分隔符时,大多数自动关闭插件已经这样做了。可能想看看其中一个,看看他们是如何做到的,并将其更改为使用 Tab 而不是结束分隔符。

标签: vim parentheses


【解决方案1】:

一个键只能有一个工作映射(您可以定义至少两个:本地缓冲区(每个缓冲区一个)和一个全局映射,但它们不能同时工作),因此您需要类似的东西:

inoremap <expr> <Tab> stridx('])}', getline('.')[col('.')-1])==-1 ? "\t" : "\<Right>"

不要使用strpart()string[idx1:idx2] 工作正常(所有idx1idx2: 都是可选的,但至少必须存在一个),打字更少,可读性更强.

【讨论】:

  • 谢谢!你摇滚!我现在唯一的问题是,如果光标一直向右,我的制表键不会插入制表符:(
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2019-01-11
  • 2017-09-29
  • 2017-07-05
相关资源
最近更新 更多