Vim 魔术结束括号

标签 vim

如果我可以输入 ] 在 vi​​m 中会很棒(或其他一些字符,可能是 <C-]> )并让它自动插入正确关闭左括号的任何括号。例如。如果我的缓冲区中有这个:

object(function(x) { x+[1,2,3

然后我按 ]]] , 字符 ]})将被插入。如何做到这一点?

最佳答案

这是您可能想要的草图。内置函数 searchpairsearchpairpos对各种文本编辑任务都有很大帮助:)

" Return a corresponding paren to be sent to the buffer
function! CloseParen()
    let parenpairs = {'(' : ')',
                   \  '[' : ']',
                   \  '{' : '}'}

    let [m_lnum, m_col] = searchpairpos('[[({]', '', '[\])}]', 'nbW')

    if (m_lnum != 0) && (m_col != 0)
        let c = getline(m_lnum)[m_col - 1]
        return parenpairs[c]
    endif
    return ''
endfun

要舒适地使用它,请制作 imap其中:
imap <C-e> <C-r>=CloseParen()<CR>

编辑 :过度转义搜索正则表达式 \被包括在搜索中。现在少了一个问题。

关于Vim 魔术结束括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080286/

相关文章:

vim - 如何让 Vim Ex 命令模式范围从当前行开始搜索?

macos - 在vim中打开语法高亮显示警告消息

linux - 可在 Ubuntu 和 MacOsX 上运行的 bash 脚本

vim - 如何用Vim中的视觉选择来替代?

java - vim 中 maven3 的错误格式

vim - vim中的位置列表和quickfix列表有什么区别

git - 如何将 git 文件状态添加到 vim 的状态行?

vim - 如何在 Vim 中实现类似 MATLAB 的单元格模式

c - vim 似乎没有找到 .clang_complete

linux - 如何跳转到taglist中的方法