我正在通过Java书籍,因此,我发现自己输入了大量的花括号。考虑到我知道Vim有多强大,虽然远非专家,但我已经找到了让它为我处理大括号的方法。我遇到了autocmd
s的使用,我把以下内容放在我的.vimrc中:
autocmd FileType java inoremap <buffer> { {<CR><CR>}<Up><Tab>
。我也试过了一个正常的inoremap
,但没有用。
我现在拥有的最高级别块。但是,当我深入到任何块时,<Tab>
似乎不会执行。其他一切都按预期工作。但无论之后有多深,但光标总是在方法级别的开头结束。我想这是因为我告诉它只添加一个标签。如何使标签计数取决于深度?
答案 0 :(得分:0)
假设您设置了某种自动延迟设置:
augroup Java
autocmd!
autocmd FileType java inoremap <buffer> { {<CR>}<C-c>O
augroup END
您的版本的作用:
你说对了:因为你只插入一个标签,这只能让你进入第一级缩进。
我的版本的作用:
:help O
尊重您的自动延迟设置,因此它将在右缩进级别进入插入模式。
或者,您可以像这样修改您的版本:
augroup Java
autocmd!
autocmd FileType java inoremap <buffer> { {<CR><CR>}<C-c>S
augroup END
将插入模式保留在大括号之间的空白行上,并执行:help S
以在右缩进级别进入插入模式。
有许多方法可以给猫皮肤。
答案 1 :(得分:0)
我建议让Vim使用其内置的Java模式。如果你添加
source $VIMRUNTIME/vimrc_example.vim
到你的.vimrc,Vim会获得一些有用的默认值,包括自动文件类型检测和格式化规则。您会发现打开.java文件会为您提供所需的大部分内容。
要预测下一个问题,如果标签宽度不是您想要的,请添加类似
的内容autocmd FileType java setlocal shiftwidth=4
到.vimrc的末尾。