首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >leetcode用来自动关闭括号的vim插件是什么?

leetcode用来自动关闭括号的vim插件是什么?
EN

Stack Overflow用户
提问于 2019-07-26 06:55:39
回答 1查看 293关注 0票数 0

我喜欢leetcode vim自动关闭大括号的方式。

  1. 当我输入" ' ( { [时,它会关闭,这可以用简单的vim映射来完成。
  2. 当我试图再关闭一个tim时,它不会添加另一个"')}]和skip。大多数vim插件都是这样工作的。
  3. 当我按{并输入时,它会自动为我的代码添加新行,并为我缩进。具体而言
代码语言:javascript
复制
{<cursor>}

当我按enter键,它就变成

代码语言:javascript
复制
{
     cursor
}

我不知道哪个插件像leetcode vim一样工作。

另外,什么是解决第二问题的香草方式?

我试图通过查看插件来进行分析,但它太复杂了。

EN

回答 1

Stack Overflow用户

发布于 2019-07-29 14:41:46

@dlmeetei的答案将在我输入()时打印(),而转义映射则是累赘的。

因此,我改进了上面的答案,通过创建一个简单的函数,所以请纠正和改进我的想法。

代码语言:javascript
复制
"" check whether current charcter (on cursor) equals parameter
"" then decide whether to put new parenthesis
func! AutoClose(...)
    let cur = getline(".")[col(".")]
    if cur != a:1
        if a:1 == "'" || a:1 == '"'
            execute "normal!a".a:1.a:1
        else
            execute "normal!a".a:1
        endif
        execute "normal!h"
    else
        execute "normal!l"
    endif 
endfunc

inoremap ( ()<left> 
inoremap [ []<left> 
inoremap { {}<left> 
inoremap ) <ESC>:call AutoClose(')') <CR>a 
inoremap ] <ESC>:call AutoClose(']') <CR>a 
inoremap } <ESC>:call AutoClose('}') <CR>a 
inoremap " <ESC>:call AutoClose('"') <CR>a 
inoremap ' <ESC>:call AutoClose("'") <CR>a 
inoremap {<CR> {<CR>}<ESC>O 
inoremap {;<CR> {<CR>};<ESC>O
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57214641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档