0008 vim括号引号html标签自动补全

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

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

<!--括号引号补全代码{{{-->
" 括号引号补全
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {<CR>}<Esc>O
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap } <c-r>=CloseBracket()<CR>
inoremap " <c-r>=QuoteDelim('"')<CR>
inoremap ' <c-r>=QuoteDelim("'")<CR>

function ClosePair(char)
	if getline('.')[col('.') - 1] == a:char
		return "\<Right>"
	else
		return a:char
	endif
endf

function CloseBracket()
	if match(getline(line('.') + 1), '\s*}') < 0
		return "\<CR>}"
	else
		return "\<Esc>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 "\<Right>"
	else
		"Starting a string
		return a:char.a:char."\<Esc>i"
	endif
endf
<!--}}}-->

<!--html标签自动补全{{{-->
" html自动补全
autocmd BufNewFile *  setlocal filetype=html
function! InsertHtmlTag()
	let pat = '\c<\w\+\s*\(\s\+\w\+\s*=\s*[''#$;,()."a-z0-9]\+\)*\s*>'
	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 > <ESC>:call InsertHtmlTag()<CR>a<CR><Esc>O
<!--}}}-->

之所以这里的括号补全代码中的函数实现反匹配
当打入(输入内容),再按)系统会自动检查前面是否已经有匹配的括号
如果有就不再键入),而是直接跳出

或许你得加:
set autoindent
set cindent

参考:
http://www.cnblogs.com/huanlei/archive/2012/04/02/2430153.html
http://blog.sina.com.cn/s/blog_01ea59580101hvth.html

时间: 2024-10-27 09:35:23

0008 vim括号引号html标签自动补全的相关文章

vim编辑下Python2.0自动补全

Python自动补全有vim编辑下和python交互模式下,下面分别介绍如何在这2种情况下实现Tab键自动补全. 一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内函数,变量补全 from module import sub-module 补全 想为vim启动自动补全需要下载插件,地址如下:http://vim.sourceforge.net/s

Linux下Python设置vim和交互模式下自动补全

运行环境: aliyun ECS Centos6.5_x64 一.vim python自动补全插件 pydiction 1.安装配置 wget https://github.com/rkulla/pydiction/archive/master.zip unzip -q master mv pydiction-master pydiction mkdir -p ~/.vim/tools/pydiction cp -r pydiction/after ~/.vim cp pydiction/com

vim 创建Python脚本时候自动补全解释器和编码方法

在用户家目录下创建vimrc文件,然后将如下内容添加进来: function HeaderPython() call setline(1, "#!/usr/bin/env python") call append(1, "#-*- coding:utf8 -*-") normal G normal o normal o endf autocmd bufnewfile *.py call HeaderPython() 保存退出即可 比如我用的是root用户,那么我创建

windows下vim中实现C/C++自动补全

1.下载ctags并解压到任意目录,如d:/ctags (下载地址: http://sourceforge.net/projects/ctags/files/ ) 2.cmd跳转到include目录中并执行命令  d:/ctags/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q (也可把d:/ctags加入到环境变量path中,即可直接在命令行中输入   ctags .... 3.下载omnicppcomplete并解压到vim安装目录下的vim

Vim自动补全插件----YouCompleteMe安装与配置

Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用的是neocomplcache+code_complete+omnicppcomplete,但效果还是不是很好.看到有YCM后前面的插件可以说拜拜了. YouCompleteMe:一个随键而全的.支持模糊搜索的.高速补全的插件.YCM 由 google 公司搜索项目组的软件工程师 Strahinja

【转】Vim自动补全插件----YouCompleteMe安装与配置

原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用的是neocomplcache+code_complete+omnicppcomplete,但效果还是不是很好.看到有YCM后前面的插件可以说拜拜了. YouCompleteMe:一个随键而全的.支持模糊搜索的.高速补全的插件.YCM 由 google 公司搜索

辛星深入分析vim的自动补全功能以及vim的映射

以前对于vim的自动补全功能,都是需要的时候从网上下载点配置项,然后拷贝到自己的vimrc上去,自己也不知道是什么意思,结果发现搜索到的很多自动补全的方式都很另类,有的喜欢在补全大括号的时候自动换行,还有的喜欢在补全大括号的时候自动缩进一下,那么,我们花几分钟时间了解一下,自己写出来这些配置,何乐而不为呢? ********************************按键映射****************************** 1.首先分清一个概念,那就是nnoremap和inore

Vim设置括号自动补全和快速跳出

一.设置括号自动补全 inoremap ' ''<ESC>i inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {}<ESC>i<CR><ESC>V<O 其中花括号{设置,自动补全并换行缩进,这在写函数的时候或语句块的时候特别有用. 参考: http://blog.csdn.net/dark_fi

Vundle管理vim插件实现python自动补全

vim使用方便,如果安装了插件就更完美了. 下面介绍vundle管理vim插件,配置python环境. 示例图 下载安装Vundle,修改~/.vimrc 配置文件,写python程序能够实现自动补全,提示等. " Source a global configuration file if available "if filereadable("/etc/vim/vimrc.local") " source /etc/vim/vimrc.local &qu