vimrc 花括号自动补全

本文介绍如何在Vim编辑器中通过配置vimrc文件,实现类似Eclipse中输入左括号后按回车键自动将光标跳转到括号中间的功能,以方便数组输入。

eclipse中,输入左括号,按回车键,会有如下效果

{

/tab光标

}

如果vim要实现相同的效果,只要在vimrc粘贴以下代码:

inoremap } }<ESC>i "输入右括号时,光标跳到括号中间,这个是为了方便数组的输入                                                                                                                 
inoremap <CR> <c-r>=CloseBrace1()<CR>  "输入回车时,先判断前面是否有左括号,如果有就是以上效果,如果没有,就是普通的换行效果
function CloseBrace1()     
    if getline('.')[col('.')-2] == '{'
        return "\<CR>}\<ESC>kA\<CR>"
    else          
        return "\<CR>"     
    end if        
endf 


在`.vimrc`中配置自动补全功能可采用以下几种方式: #### 基本符号自动补全 在`.vimrc`中添加如下代码可实现括号、引号等基本符号的自动补全: ```vim inoremap ( ()<ESC>i "设置(自动补全 inoremap [ []<ESC>i "设置[自动补全 inoremap { {}<ESC>i "设置{自动补全 inoremap < <> <ESC>i "设置<自动补全 inoremap ' ''<ESC>i "设置'自动补全 inoremap " ""<ESC>i "设置"自动补全 ``` 这些代码在插入模式下,当输入左括号、左中括号、左大括号、小于号、单引号、双引号时,会自动补全对应的右符号,并将光标置于中间,方便继续输入内容[^1][^2]。 #### 利用插件实现智能补全 1. **YouCompleteMe 插件**: - 首先,在`.vimrc`中添加以下内容以使用 Vundle 安装 YouCompleteMe: ```vim set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'Valloric/YouCompleteMe' call vundle#end() ``` - 安装完成后,还可添加以下配置优化补全效果: ```vim let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' let g:ycm_confirm_extra_conf = 0 let g:ycm_collect_identifiers_from_tags_files = 1 let g:ycm_collect_identifiers_from_comments_and_strings = 1 let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_complete_in_strings = 1 let g:ycm_max_num_candidates = 20 ``` 2. **Supertab 插件**: - 使用 Vundle 安装 Supertab,在`.vimrc`中添加: ```vim Plugin 'ervandew/supertab' ``` - 并添加如下配置,让 Tab 键智能触发自动补全: ```vim let g:SuperTabDefaultCompletionType = '<C-n>' ``` #### Omni 补全 对于特定语言(如 Verilog),可结合 ctags 生成的标签文件实现 Omni 补全。 - 先使用 ctags 生成标签文件: ```sh ctags -R --languages=verilog . ``` - 然后在`.vimrc`中添加以下内容启用 Omni 补全: ```vim set completeopt=menuone,longest,preview autocmd FileType verilog setlocal omnifunc=verilog#Complete ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值