b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

自动补全_securecrt自动补全_devc自动补全

电脑杂谈  发布时间:2016-12-19 04:00:38  来源:网络整理

securecrt自动补全_gvim 自动补全_devc自动补全

自动补全

很多现代 IDE 都有自动补全配对括号的功能,比如输入了左括号“(”,IDE就自动在后面添加一个对应的右括号“)”,并且将光标移到括号中间。VIM 虽然没有直接提供这个功能,但要实现其实非常简单,只要在你的.vimrc 文件中添加下面的内容就可以了:

1 ' 插入匹配括号

2 inoremap ( ()

3 inoremap [ []

4 inoremap { {}

原理很简单,就是将左括号的键映射为一个新的操作,在输入左括号时,让 VIM立刻输入右括号,同时再将光标左移一格到括号中间。

除了括号的自动补全,有时我们也需要括号的自动删除。自动补全比如在输入了左括号后突然发现输错了,本来只需要简单地按一下退格键,将刚才输入的左括号删除就行了,但现在 VIM 自动加了一个右括号,退格键只能删除左括号,这个自动加上右括号还得按一下 DELETE键才能删掉。

所以,我们还需要一个功能,如果按退格键删除了左括号,那么也要自动地把对应的右括号删除。这个操作使用简单的键盘映射就有点难度了,需要借助函数,如下:

01 ' 按退格键时判断当前光标前一个字符,如果是左括号,则删除对应的右括号以及括号中间的内容

02 function! RemovePairs()

03 let s:line = getline('.')

04 let s:previous_char = s:line[col('.')-1] ' 取得当前光标前一个字符

05

06 if index(['(', '[', '{'], s:previous_char) != -1

07 execute 'normal! v%xi'

08 else

09 execute 'normal! a\'

10 end

11 endfunc

tion

12 ' 用退格键删除一个左括号时同时删除对应的右括号

13 inoremap :call RemovePairs()a

注:上面这段后来被 weakdancer 指出了一些问题,经过考虑及测试之后,我把它改写为这样了:

01 ' 按退格键时判断当前光标前一个字符,如果是左括号,则删除对应的右括号以及括号中间的内容

02 function! RemovePairs()

03 let l:line = getline('.')

04 let l:previous_char = l:line[col('.')-1] ' 取得当前光标前一个字符

05

06 if index(['(', '[', '{'], l:previous_char) != -1

07 let l:original_pos = getpos('.')

08 execute 'normal %'

09 let l:new_pos = getpos('.')

10

11 ' 如果没有匹配的右括号

12 if l:original_pos == l:new_pos

13 execute 'normal! a\'

14 return

15 end

16

17 let l:line2 = getline('.')

18 if len(l:line2) == col('.')

19 ' 如果右括号是当前行最后一个字符

20 execute 'normal! v%xa'

21 else

22 ' 如果右括号不是当前行最后一个字符

23 execute 'normal! v%xi'

securecrt自动补全_devc自动补全_gvim 自动补全

24 end

25

26 else

27 execute 'normal! a\'

28 end

29 endfunction


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23051-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...