Vim函数用于测试光标后的字符
我试图在vim中复制IDE(如IntelliJ)的功能,它们可以执行以下操作,让|成为光标:Vim函数用于测试光标后的字符,vim,macros,intellij-idea,Vim,Macros,Intellij Idea,我试图在vim中复制IDE(如IntelliJ)的功能,它们可以执行以下操作,让|成为光标: 我键入一个打开的参数:( 它会自动关闭并将光标放在中间:(|) 我在中间键入了一些文本:(此处有一些文本|) 我键入了一个关闭参数,而不是插入一个关闭参数,它只是将光标移动到已经插入的参数上:(此处有一些文本)| 我有以下一组重映射,它们复制了1-3的功能,当我只键入()时: inoremap(()i inoremap()i 似乎我需要一种方法来检测光标后的字符是否为a)为了让函数实现我在4中想要的功
inoremap(()i
inoremap()i
似乎我需要一种方法来检测光标后的字符是否为a)为了让函数实现我在4中想要的功能,vim是否支持这一点?我不相信您可以通过简单的映射来实现这一点,因为您需要合并一些条件逻辑来决定何时以及何时不添加右括号。相反,您必须定义一个函数来完成繁重的提升,然后映射右括号调用函数的括号。Vim的帮助中有一些关于函数的信息,但我发现这一页是非常宝贵的资源:
也就是说,有很多vim插件已经执行了这种类型的功能。我使用的一个叫做“自动对”并且可以在这里找到:。作为奖励,如果您真的对它的工作方式感兴趣,而不仅仅是对功能本身感兴趣,那么您可以看到代码。我不相信您可以通过简单的映射来实现这一点,因为您需要结合一些条件逻辑来决定何时以及何时不添加结束父级相反,您必须定义一个函数来完成繁重的工作,然后映射右括号来调用该函数。Vim的帮助中有一些关于函数的信息,但我发现这一页是非常宝贵的资源: 也就是说,有很多vim插件已经执行了这种类型的功能。我使用的一个插件叫做“自动对”,可以在这里找到:。作为奖励,如果你真的对它的工作方式感兴趣,而不仅仅是对功能本身感兴趣,你可以看到代码。试试这段代码
inoremap <expr> ) getline('.')[col('.') -1] == ')' ? "\<Right>" : ')'
inoremap)getline('.')[col('.')-1]==')'?"\" : ')'
但我建议使用插件,因为这样的设置会让您的vimrc感到困惑
我喜欢vim smartchr和vim smartinput
inoremap <expr> ) getline('.')[col('.') -1] == ')' ? "\<Right>" : ')'
inoremap)getline('.')[col('.')-1]==')'?"\" : ')'
但我建议使用插件,因为这样的设置会让您的vimrc感到困惑
我喜欢vim smartchr和vim smartinput