html编写时括号补全,0008 vim括号引号html标签自动补全

问题:怎样在vim中实现花括号引号自动补全,包括html标签?

解决办法:只要把下面两段代码粘贴到~/.vimrc中,就可以实现括号超强补全

" 括号引号补全

inoremap ( ()i

inoremap [ []i

inoremap { {}O

inoremap ) =ClosePair(')')

inoremap ] =ClosePair(']')

inoremap } =CloseBracket()

inoremap " =QuoteDelim('"')

inoremap ' =QuoteDelim("'")

function ClosePair(char)

if getline('.')[col('.') - 1] == a:char

return "\"

else

return a:char

endif

endf

function CloseBracket()

if match(getline(line('.') + 1), '\s*}') < 0

return "\}"

else

return "\j0f}a"

endif

endf

function QuoteDelim(char)

let line = getline('.')

let col = col('.')

if line[col - 2] == "\\"

"Inserting a quoted quotation mark into the string

return a:char

elseif line[col - 1] == a:char

"Escaping out of the string

return "\"

else

"Starting a string

return a:char.a:char."\i"

endif

endf

" html自动补全

autocmd BufNewFile * setlocal filetype=html

function! InsertHtmlTag()

let pat = '\c'

normal! a>

let save_cursor = getpos('.')

let result = matchstr(getline(save_cursor[1]), pat)

"if (search(pat, 'b', save_cursor[1]) && searchpair('','bn',0, getline('.')) > 0)

if (search(pat, 'b', save_cursor[1]))

normal! lyiwf>

normal! a

normal! p

normal! a>

endif

:call cursor(save_cursor[1], save_cursor[2], save_cursor[3])

endfunction

inoremap > :call InsertHtmlTag()aO

之所以这里的括号补全代码中的函数实现反匹配

当打入(输入内容),再按)系统会自动检查前面是否已经有匹配的括号

如果有就不再键入),而是直接跳出

或许你得加:

set autoindent

set cindent

参考:

http://www.cnblogs.com/huanlei/archive/2012/04/02/2430153.html

http://blog.sina.com.cn/s/blog_01ea59580101hvth.html

原文:http://blog.csdn.net/zcube/article/details/42325815

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值