首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Vim中自动完成和格式化括号?

如何在Vim中自动完成和格式化括号?
EN

Stack Overflow用户
提问于 2018-03-27 00:12:12
回答 2查看 1.2K关注 0票数 0

我正在研究一本Java书,结果,我发现自己输入了很多花括号。考虑到我知道Vim有多强大,虽然我不是专家,但我一直在寻找方法让它为我处理支架。我偶然发现了autocmd的用法,并在.vimrc中添加了以下内容:autocmd FileType java inoremap <buffer> { {<CR><CR>}<Up><Tab>。我也试过一个普通的inoremap,但没有结果。

我现在为最高层的区块工作。然而,当我深入到任何块时,<Tab>似乎没有执行。其他的一切都如预期的那样运作。但是不管在那之后有多深,但是游标总是返回到方法级别的开头。我想是因为我告诉它要加一个标签。如何使制表符计数取决于深度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-27 05:36:37

假设您设置了某种类型的自动缩进:

代码语言:javascript
代码运行次数:0
运行
复制
augroup Java
    autocmd!
    autocmd FileType java inoremap <buffer> { {<CR>}<C-c>O
augroup END

你的版本是做什么的:

  1. 插入开口支撑,
  2. 插入换行符,
  3. 插入换行符,
  4. 插入关闭支撑,
  5. 将光标移到第1列,
  6. 插入标签。

您做得对:因为您只插入了一个选项卡,这只能使您达到缩进的第一个级别。

我的版本是这样的:

  1. 插入开口支撑,
  2. 插入换行符,
  3. 插入关闭支撑,
  4. 退出插入模式而不触发自动命令,
  5. 在当前行上方打开一条新行。

:help O尊重您的自动缩进设置,因此它将在正确的缩进级别进入插入模式。

或者,您可以这样修改您的版本:

代码语言:javascript
代码运行次数:0
运行
复制
augroup Java
    autocmd!
    autocmd FileType java inoremap <buffer> { {<CR><CR>}<C-c>S
augroup END

其中,将插入模式保留在大括号之间的空行上,并执行:help S以在右缩进级别进入插入模式。

剥那只猫皮有很多种方法。

票数 1
EN

Stack Overflow用户

发布于 2018-03-28 10:23:39

我建议让Vim使用它的内置Java模式。如果你加上

代码语言:javascript
代码运行次数:0
运行
复制
source $VIMRUNTIME/vimrc_example.vim

对于您的.vimrc,Vim将获取大量有用的缺省值,包括自动文件类型检测和格式化规则。您会发现,打开一个.java文件将为您提供您想要的大部分内容。

为了预测下一个问题,如果选项卡的宽度不是您想要的,请添加以下内容

代码语言:javascript
代码运行次数:0
运行
复制
autocmd FileType java setlocal shiftwidth=4

直到你的.vimrc结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49502515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档