出于个人习惯,常用进输入多层括号时,想用回车逐层从内跳出。
如 print(intN.toString(|)) 逐层跳出。当然,对' " () [] {} 都有用:)
目前存在一些小问题:
1、当使用<del>删除右边的一个配对字符后,功能将失灵,返回普通模式 :)
2、如果要要强行找行,请使用 Shift+回车
3、还有一些待发现:)
下面为源代码,修改部分已标出。
"==============================================================================
" closepairs.vim - Auto closes pairs of characters
"==============================================================================
"
" Author: NoWhereMan (Edoardo Vacchi) <uncommonnonsense at gmail dot com>
" Version: 0.1
" URL: http://www.flatpress.org/
" License: Public Domain
"==============================================================================
"inoremap ( ()<left>
"inoremap { {}<left>
"inoremap [ []<left>
"by phoenix"
inoremap <expr> <Esc> <SID>esc()
inoremap <expr> <CR> <SID>cr()
vnoremap <leader>" "zdi"<c-r>z"
vnoremap <leader>' "zdi'<c-r>z'
vnoremap <leader>( "zdi(<c-r>z)
vnoremap <leader>[ "zdi[<c-r>z]
vnoremap <leader>{ "zdi{<c-r>z}
inoremap <expr> <bs> <SID>delpair()
inoremap <expr> ) <SID>escapepair(')')
inoremap <expr> } <SID>escapepair('}')
inoremap <expr> ] <SID>escapepair(']')
inoremap <expr> " <SID>pairquotes('"')
inoremap <expr> ' <SID>pairquotes("'")
inoremap <expr> ( <SID>pairquotes('(')
inoremap <expr> [ <SID>pairquotes("[")
inoremap <expr> { <SID>pairquotes("{")
function! s:delpair()
let l:lst = ['""',"''",'{}','[]','()']
let l:col = col('.')
let l:line = getline('.')
let l:chr = l:line[l:col-2 : l:col-1]
if index(l:lst, l:chr) > -1
return "\<bs>\<del>"
else
let l:chr = l:line[l:col-3:l:col-2]
if (index(l:lst, l:chr)) > - 1
return "\<bs>\<bs>"
endif
return "\<bs>"
endf
function! s:escapepair(right)
let l:col = col('.')
let l:chr = getline('.')[l:col-1]
if a:right == l:chr
return "\<right>"
else
return a:right
endf
"function! s:pairquotes(pair)
"let l:col = col('.')
"let l:line = getline('.')
"let l:chr = l:line[l:col-1]
"if a:pair == l:chr
"return "\<right>"
"else
"return a:pair.a:pair."\<left>"
"endf
"by phoenix
function! s:pairquotes(pair)
let l:dict={'"':'"',"'":"'",'(':')','[':']','{':'}'}
let l:col = col('.')
let l:line = getline('.')
if( a:pair=='"' || a:pair=="'")
let l:chr = l:line[l:col-1]
else
let l:chr = ""
endif
if l:dict[a:pair]==l:chr
if len(s:quotes)>0
call remove(s:quotes,len(s:quotes)-1)
endif
return "\<right>"
else
call add(s:quotes,l:dict[a:pair])
return a:pair.l:dict[a:pair]."\<left>"
endif
endf
function! s:esc()
let s:quotes=[]
return "\<Esc>"
endf
function! s:cr()
if !empty(s:quotes)
let quote=s:quotes[len(s:quotes)-1]
call remove(s:quotes,len(s:quotes)-1)
return "\<esc>f".quote."i\<right>"
else
return "\<esc>o"
endif
endf
let s:quotes=[]
分享到:
相关推荐
VMware-VIM-all-6.7.0-15976714 原版镜像 .................................................................................................................
vmware vcenter6.5 for windows版本。 VMware-VIM-all-6.5.0-14020092
auto-pairs是vim的一个极小的插件。它对于用vim来编写程序,提供了极大的便。我ubuntu16中,用vim编写c和c++程序,安装了此插件,极大地方便了代码的输入。 二、功能介绍: 它可以自动完成大括号、小括号、中括号、...
Eclipse中的Vim插件允许开发者在Eclipse环境中使用类似于Vim的编辑模式,提供了Vim的快捷键和功能,比如正常模式、插入模式和可视模式,使得习惯于Vim操作的用户在Eclipse中也能保持高效率。 2. **Subversion (svn-...
Vim-plug是一个轻量级且高效的 Vim 插件管理器,它允许用户方便地安装、更新和管理各种Vim插件。这个压缩包“vim-plug, 我的vim插件,基于vim-plug安装.zip”包含了Vim-plug的源代码,这将帮助你了解如何在你的Vim...
本篇文章将深入探讨如何利用Vim插件实现代码补全、语法高亮和文件浏览等功能。 一、代码补全 代码补全是现代开发环境中必不可少的一项功能,它能够帮助程序员快速输入代码,减少出错概率。在Vim中,我们可以使用`...
vim-tmux-focus-events, 使终端vim和tmux更好地协同工作 tmux-focus-events.vimFocusGained 和 FocusLost 自动命令事件在终端vim中不工作。 这个插件在使用vim内部Tmux时恢复它们。以下是相关内容:vim fugitive插件...
`vlog-support`是为Vim设计的一个插件,专门为了增强Verilog编程的体验。 **1. 插件安装** 首先,你需要将`vlog-support.zip`文件解压到你的Vim插件目录中。这个路径通常位于`~/.vim/`(对于Linux和macOS用户)或`...
linux下用vim编辑器配合jeffy插件实现比较顺手的编程环境。Jeffy插件和配置文件(.vim):代码高亮 自动提示等。 vim版本必须大于7.1。 1,备份下vim配置文件(可选) 2,解压jeffy-vim.zip 和里面的jeffy-vim-read.tar...
VMware vSphere 6.7 百度网盘链接及提取 码
- **插件支持**: VIM支持第三方插件,可以通过安装插件来增强功能或集成其他管理系统。 - **API接口**: 提供了丰富的API接口,方便开发者进行二次开发,实现自动化运维任务。 #### 5. **安全性** - **认证与授权...
Systemverilog.vim-1.9插件是专为Vim编辑器设计的一款增强工具,旨在提高SystemVerilog语言的开发效率和代码质量。SystemVerilog是一种广泛应用于集成电路(IC)设计领域的硬件描述语言,它提供了丰富的结构和行为...
amoscykl博主的Vim的终极配置方案,完美的写代码界面! ——.vimrc这篇帖子 ,还有我自己的修改和整理,有语法高亮,语句补全,显示行号,自动缩进等等功能。 还有创建源文件自动添加头文件的功能,例如写一个.c程序 ...
其中,`vim-airline`插件就是一款非常实用的增强型状态栏插件,它可以提供更美观的状态栏显示,并支持多种自定义选项。 #### 二、vim-airline插件介绍 **vim-airline**是一款用于美化Vim状态栏的插件,它可以显示...
Linux-CentOS7离线安装VIM及相关依赖包 vim-8.0.zip gpm-libs-1.20.7-6.el7.i686.rpm ncurses-5.9-14.20130511.el7_4.x86_64.rpm ncurses-base-5.9-14.20130511.el7_4.noarch.rpm ncurses-devel-5.9-14.20130511.el7...
vim配置插件
为了提升Vim的使用体验和功能,我们常常会安装各种插件。`vim-plug`是一个简洁且高效的Vim插件管理器,它使得安装、更新和管理Vim插件变得极其简单。下面将详细介绍如何使用vim-plug进行Vim插件的基础配置。 首先,...
vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip
这个插件,"vim-mode-plus-move-selected-text",旨在让Atom用户在Vim模式下能像处理对象一样移动选定的文本块,增强了编辑体验。 在Vim模式下,通常可以使用可视模式选择文本,但这个插件允许你更灵活地移动这些...
压缩包为直接打包/etc/vim配置及插件包。 root@ubuntu:/etc/vim# tree -L 2 . bundle ale auto-pairs echofunc gdbmgr indentLine LeaderF nerdcommenter nerdtree nerdtree-git-plugin quick-scope ...