Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Formatting Vim:编写函数骨架_Formatting_Vim - Fatal编程技术网

Formatting Vim:编写函数骨架

Formatting Vim:编写函数骨架,formatting,vim,Formatting,Vim,当用Vim编写新函数时,我似乎总是需要做一些手工工作 x=光标位置 如果我开始键入一个函数并插入两个大括号 function Apples() {x} 然后按回车键,显然是这样的 function Apples() { x} 这导致我必须ESC,O才能向下移动闭合卷曲曲线。 虽然这似乎是一件小事,但在过去的5个月里这样做会让人感到烦恼,我知道有很多像我这样的人知道应该有一个优雅的解决方案。我对插件建议持开放态度。您可以使用这样一个简单的映射。SO和web上有几十种变体: inoremap {

当用Vim编写新函数时,我似乎总是需要做一些手工工作

x=光标位置

如果我开始键入一个函数并插入两个大括号

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