30 ' 用退格键删除一个左括号时同时删除对应的右括号
31 inoremap :call RemovePairs()a
这样就比较完美了。不过在非括号时其实还有个小问题(比如“<行首>a<光标>bcde”这样的情况下,按了退格键后,“a”虽然被删除了,但光标不是移到行首,而是移到b 的后面),但应该不会对使用造成太大影响。
另外,在自动补全了右括号之后,如果用户再输入右括号会怎么样呢?一般来说,比较合理的做法似乎是忽略掉这个后输入的多余的右括号,直接将光标向右移到一格。代码如下:
01 ' 输入一个字符时,如果下一个字符也是括号,则删除它,避免出现重复字符
02 function! RemoveNextDoubleChar(char)
03 let l:line = getline('.')
04 let l:next_char = l:line[col('.')] ' 取得当前光标后一个字符
05
06 if a:char == l:next_char
07 execute 'normal! l'
08 else
09 execute 'normal! i' . a:char . ''
10 end
11 endfunction
12 inoremap ) :call RemoveNextDoubleChar(')')a
13 inoremap ] :call RemoveNextDoubleChar(']')a
14 inoremap } :call RemoveNextDoubleChar('}')a
这样,在 VIM 中输入或删除括号就方便多了!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23051-2.html
这样吧
当然凭他的数学水平也确实管不了
真够恶心的