Formatting Vim:编写函数骨架
当用Vim编写新函数时,我似乎总是需要做一些手工工作 x=光标位置 如果我开始键入一个函数并插入两个大括号Formatting Vim:编写函数骨架,formatting,vim,Formatting,Vim,当用Vim编写新函数时,我似乎总是需要做一些手工工作 x=光标位置 如果我开始键入一个函数并插入两个大括号 function Apples() {x} 然后按回车键,显然是这样的 function Apples() { x} 这导致我必须ESC,O才能向下移动闭合卷曲曲线。 虽然这似乎是一件小事,但在过去的5个月里这样做会让人感到烦恼,我知道有很多像我这样的人知道应该有一个优雅的解决方案。我对插件建议持开放态度。您可以使用这样一个简单的映射。SO和web上有几十种变体: inoremap {
function Apples() {x}
然后按回车键,显然是这样的
function Apples() {
x}
这导致我必须ESC,O才能向下移动闭合卷曲曲线。
虽然这似乎是一件小事,但在过去的5个月里这样做会让人感到烦恼,我知道有很多像我这样的人知道应该有一个优雅的解决方案。我对插件建议持开放态度。您可以使用这样一个简单的映射。SO和web上有几十种变体:
inoremap {} {<CR>}<C-o>O
点击后,在选择模式下使用函数_name可获得以下结果:
function [function_name]() {
}
您可以键入所需的名称:
function Apples|() {
}
点击可将光标放置在括号之间:
function Apples(|) {
}
再次点击以将光标放置在具有正确缩进的下一行:
function Apples() {
|
}
在C或C++模式下,当你在两个括号内回车时,插入你所期望的换行。 其思想是测试:getline.[col.-2:col.-1]=={}并在条件为true或\时执行/插入\\O
在左括号内,我有以下内容: 我猜未经测试的代码将*转化为:" put it into ftplugin/{yourfiltetype, javascript?}.vim
inoremap <buffer> <silent> <expr> <cr> s:SmartCR()
function s:SmartCR()
return getline(".")[col(".")-2:col(".")-1]=="{}"
\ ? "\<cr>\<esc>O"
\ : "\<cr>"
endfunction
*实际上,lhbracketsenrich_imap还做了一些其他事情,映射与LaTeXSuite的imap.vim存在兼容;映射可以与左括号中的所有其他映射一起打开/关闭
call lh#brackets#enrich_imap('<cr>',
\ {'condition': 'getline(".")[col(".")-2:col(".")-1]=="{}"',
\ 'action': 'Cpp_Add2NewLinesBetweenBrackets()'},
\ 1,
\ '\<cr\>'
\ )
function! Cpp_Add2NewLinesBetweenBrackets()
return "\<cr>\<esc>O"
endfunction
" put it into ftplugin/{yourfiltetype, javascript?}.vim
inoremap <buffer> <silent> <expr> <cr> s:SmartCR()
function s:SmartCR()
return getline(".")[col(".")-2:col(".")-1]=="{}"
\ ? "\<cr>\<esc>O"
\ : "\<cr>"
endfunction