分页: 1 / 2

vim像sublime一样的括号处理

发表于 : 2013-11-26 19:02
ceclinux
求一段.vimrc
要求如下,在一行中间键入(,则只会出现(
在一行末端键入(,则出现(|)
上面|为光标位置

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 0:26
lilydjwg
很简单,我随手就可以给你写一个:

代码: 全选

function MayCloseParentheses()
  if col('.') == col('$')
    return "()\<Left>"
  else
    return "("
  endif
endfunction

inoremap <expr> <silent> ( MayCloseParentheses()

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 0:50
ceclinux
lilydjwg 写了:很简单,我随手就可以给你写一个:

代码: 全选

function MayCloseParentheses()
  if col('.') == col('$')
    return "()\<Left>"
  else
    return "("
  endif
endfunction

inoremap <expr> <silent> ( MayCloseParentheses()
:em11 我预感lilydjwg大神会回答,果然如此~

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 1:14
ceclinux
lilydjwg 写了:很简单,我随手就可以给你写一个:

代码: 全选

function MayCloseParentheses()
  if col('.') == col('$')
    return "()\<Left>"
  else
    return "("
  endif
endfunction

inoremap <expr> <silent> ( MayCloseParentheses()
我把manual看了一遍,<silent>这里不懂,为什么要避免回显,本来就不会回显的吧,谢谢

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 9:41
eexpress

代码: 全选

imap ( ()<ESC>i
这不更简单嘛。

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 10:51
lilydjwg
ceclinux 写了:
lilydjwg 写了:很简单,我随手就可以给你写一个:

代码: 全选

function MayCloseParentheses()
  if col('.') == col('$')
    return "()\<Left>"
  else
    return "("
  endif
endfunction

inoremap <expr> <silent> ( MayCloseParentheses()
我把manual看了一遍,<silent>这里不懂,为什么要避免回显,本来就不会回显的吧,谢谢
习惯性地加上了。不加应该也看不到什么吧。

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 10:51
lilydjwg
eexpress 写了:

代码: 全选

imap ( ()<ESC>i
这不更简单嘛。
ee 回帖不看帖的么?

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 13:14
sarrow
嗯。lilydjwg 一直都这么熟悉vim脚本;

我还是喜欢手动一点进行控制;

(
return "("

<Alt-(>
return "()<left>"

因为需求总是变化的。这种操作对我而言,已经足够省事了。

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 13:44
ceclinux

代码: 全选

function MayCloseParentheses()
"(当前指针的横坐标)是否等于(当前指针所在行的长度加一),即判断指针是否在当前行的末端
if col('.') == col('$')
"返回(),然后指针向左移一位(移入括号中)
return "()\<Left>"
else
return "("
endif
endfunction
"<expr>为对方法的映射
inoremap <expr>  ( MayCloseParentheses()
记下。。

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 13:47
ceclinux
[quote="sarrow"]嗯。lilydjwg 一直都这么熟悉vim脚本;

我还是喜欢手动一点进行控制;

(
return "("

<Alt-(>
return "()<left>"

因为需求总是变化的。这种操作对我而言,已经足够省事了。[/quote《]
<Alt->( 可以这样映射吗

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 16:05
eexpress
没注意看。
只是这要求,真写代码的,几乎用不上。
行中间插()是很正常的事情。

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 16:29
ceclinux
eexpress 写了:没注意看。
只是这要求,真写代码的,几乎用不上。
行中间插()是很正常的事情。
呃,中间插()我是很少,一般中间插(然后再过一个word然后插)
要是中间插了(),发现多插了麻烦就大了。。需要<Esc>lx

Re: vim像sublime一样的括号处理

发表于 : 2013-11-27 19:09
sarrow
要是中间插了(),发现多插了麻烦就大了。。需要<Esc>lx
多插了,直接 normal 下 u 就行了。

或者删除最内层:
<Ctrol-o>ca(

要敲4下键盘,也累啊!

Re: vim像sublime一样的括号处理

发表于 : 2013-11-28 9:37
acer4740

Re: vim像sublime一样的括号处理

发表于 : 2013-11-28 12:58
Fermat618
转了一圈之后,把所有的补全括号的插件都去了。这玩意省就省了一个字母,添起乱来毫不含糊。括号里面东西少就打完了再打右括号,不会卡。东西多就把两个括号打完手动移动光标。