自动插入闭合大括号,将光标放在Vim中的大括号之间
我在这上面找到了一些线索,但它们已经有三年历史了。有没有人推荐Vim的插件,这样当我键入自动插入闭合大括号,将光标放在Vim中的大括号之间,vim,plugins,Vim,Plugins,我在这上面找到了一些线索,但它们已经有三年历史了。有没有人推荐Vim的插件,这样当我键入{, 它将做到: { ::cursor here:: } 另一件有帮助的事情是 if(::cursor here::) 键入if后,我使用以下代码(php模板): function!EatChar() 设l:char=getchar(0) 返回“” 端功能 inoreabbrev函数\函数maa(){}`aa:调用EatChar() inoreabbrevif_uif(maa){}`aa:调用EatCha
{
,
它将做到:
{
::cursor here::
}
另一件有帮助的事情是
if(::cursor here::)
键入if
后,我使用以下代码(php模板):
function!EatChar()
设l:char=getchar(0)
返回“”
端功能
inoreabbrev函数\函数maa(){}`aa:调用EatChar()
inoreabbrevif_uif(maa){}`aa:调用EatChar()
inoreabbrevifelse_uif(maa){}else{}`aa:调用EatChar()
inoreabbrev for_ufor(maa;;){}`aa:调用EatChar()
inoreabbrev foreach_uforeach(maa作为$key=>$value){}`aa:calleatchar()
inoreabbrev while_uwhile(maa){}`aa:调用EatChar()
inoreabbrev`aa:调用EatChar()
显示了一个简单的解决方案,并提供了指向一些更健壮的解决方案的链接
以下是该页面的部分解决方案:
inoremap { {}<Left>
inoremap {<CR> {<CR>}<Esc>O
inoremap {{ {
inoremap {} {}
inoremap{{}
inoremap{{}O
inoremap{{
inoremap{}{}
有许多插件和ftplugins可以完成这项工作。大多数情况下,新的插件并不更好,因为它们经常在不考虑奇怪情况的情况下重新发明轮子
在“旧”的东西中,我有:
- 这简化了映射的定义,目的是插入平衡的括号对,如字符
- 这旨在简化定义演化(*)代码段(通常是控制语句)的任务
if<Tab>
would produce:
if (::cursor:1::) {
::cursor:2::
}
if
将产生:
如果(::光标:1::){
::光标:2::
}
第一个将光标保留在::cursor:1::,第二个将带您到::cursor:2::
snipMate中的bash脚本应该有类似的功能,如果没有,添加一个就非常简单。如果您不需要各种文本片段插件(或 不想弄清楚如何配置它们以满足您的需要) 并且只有几个简单的模板,您可以创建一个映射 对于每一个,例如:
:nmap <leader>b o{<cr>}<esc>O
:nmap b o{}o
我对这个插件很好奇(最好是通用的)。现在我习惯于键入{}O
来获得同样的效果,这与Bash有什么关系?非常有用..尽管像上面那样设置一个{触发器(不需要For语句或类似语句),但似乎有一些问题您是否有幸做到这一点,或者只是使用提供的代码段?我通常使用默认代码段。但我确实尝试为“{”添加了一个代码段,它确实有效。我将此代码段添加到~/.vim/snippets/sh.snippets(Shell脚本代码段)。
:nmap <leader>b o{<cr>}<esc>O