Posts Tagged 自动完成

vim括号自动完成

今天早上脑子很乱,从8点钟起床到10:30都不知道自己干了什么事情……
想起下午还有比赛,于是想找点水题做做,练练手感。
在写2120的时候突然想给Gvim弄个map auto complete的功能,于是去网上搜了下代码,发现有好几个版本。其中有一个是传说中的最强vim配置,已经久仰大名了,于是知道相关的那段代码,“拿来主义”了一下,再稍微修改了点,用用还是比较满意。
贴下代码,具体的机制我不是很清楚,好像就是如果输入字符匹配了的话,自动执行inoremap后的命令吧,跟宏有点像。熟悉vim命令的coder应该都大致能看明白什么意思。

  1. " map auto complete
  2. inoremap ( ()<esc>:let leavechar=")"<cr>i
  3. inoremap [ []<esc>:let leavechar="]"<cr>i
  4. inoremap { {<esc>o}<esc>:let leavechar="}"<cr>O
  5. "inoremap { {}<esc>:let leavechar="}"<cr>i
  6. inoremap ' ''<esc>:let leavechar="'"<cr>i
  7. inoremap " ""<esc>:let leavechar='"'<cr>i
  8. au BufNewFile,BufRead *.\(vim\)\@! inoremap " ""<esc>:let leavechar='"'<cr>i
  9. au BufNewFile,BufRead *.\(txt\)\@! inoremap ' ''<esc>:let leavechar="'"<cr>i
  10. imap <m-l> <esc>:exec "normal f" . leavechar<cr>a
  11. imap <d-l> <esc>:exec "normal f" . leavechar<cr>

弄好后,我还想再实现这样的宏,就是一对中间没有内容的括号,删除左边的那个括号时,自动删除右边那个,不过我还没找到可以参考的代码。就先这样用着吧,有空上社区问问。

,

No Comments