我正在研究一本Java书,结果,我发现自己输入了很多花括号。考虑到我知道Vim有多强大,虽然我不是专家,但我一直在寻找方法让它为我处理支架。我偶然发现了autocmd
的用法,并在.vimrc中添加了以下内容:autocmd FileType java inoremap <buffer> { {<CR><CR>}<Up><Tab>
。我也试过一个普通的inoremap
,但没有结果。
我现在为最高层的区块工作。然而,当我深入到任何块时,<Tab>
似乎没有执行。其他的一切都如预期的那样运作。但是不管在那之后有多深,但是游标总是返回到方法级别的开头。我想是因为我告诉它要加一个标签。如何使制表符计数取决于深度?
发布于 2018-03-26 21:36:37
假设您设置了某种类型的自动缩进:
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
以在右缩进级别进入插入模式。
剥那只猫皮有很多种方法。
发布于 2018-03-28 02:23:39
我建议让Vim使用它的内置Java模式。如果你加上
source $VIMRUNTIME/vimrc_example.vim
对于您的.vimrc,Vim将获取大量有用的缺省值,包括自动文件类型检测和格式化规则。您会发现,打开一个.java文件将为您提供您想要的大部分内容。
为了预测下一个问题,如果选项卡的宽度不是您想要的,请添加以下内容
autocmd FileType java setlocal shiftwidth=4
直到你的.vimrc结束。
https://stackoverflow.com/questions/49502515
复制相似问题