Vim 写 C++,如何在输完分号; 后自动格式化当前行的代码

2016-11-22 10:09:58 +08:00
 RicardoM

最近开始在 Linux 下写一些小程序,代码格式化用的是 clang-format ,但必须手动选择区域然后格式化,用起来总有点不爽,自己加空格又太麻烦。
所以想问一下,怎么才能像 visual studio 一样,在输完分号 ; 或者右括号 ) 后自动的格式化当前行的代码。

4958 次点击
所在节点    Vim
23 条回复
araraloren
2016-11-22 10:18:39 +08:00
~~可能需要一些配置吧,个人不是很清楚,我觉得 emacs 比较好用~~
当然,图形界面还是用 qtcreator
skydiver
2016-11-22 11:00:49 +08:00
可以设置保存时自动格式化
RicardoM
2016-11-22 11:12:19 +08:00
@araraloren 现在主要是在刷一些算法和数据结构方面的题,感觉 Vim 刚好够用,所以想把 Vim 配置的顺手一点。至于 emacs 暂时不敢开坑了。
RicardoM
2016-11-22 11:21:11 +08:00
@skydiver 我是想能够在输完每一条语句后,就立即自动格式化当前语句。设置保存时自动格式化,还是得隔一会儿手动操作一下,感觉还是不太方便。
phoneli
2016-11-22 11:39:08 +08:00
我会写。有时间可以交流一下。哈哈
skydiver
2016-11-22 11:42:50 +08:00
@RicardoM 没必要那么强迫症吧
RicardoM
2016-11-22 11:49:48 +08:00
@skydiver 我也觉得自己有点强迫症,但是 windows 下 visual studio 用多了, vim 不能自动格式化当前行,心里总有点不爽。
skydiver
2016-11-22 11:59:50 +08:00
@RicardoM 真的强迫症的话应该自己就把代码格式写对。我的代码拿格式化工具处理之后大部分的地方都不会变,因为本来就写的没问题。
yangtukun1412
2016-11-22 12:19:14 +08:00
简单试了下:
inoremap ; ;<ESC>Vgq==A
RicardoM
2016-11-22 12:20:27 +08:00
@skydiver 代码格式基本没问题,就是表达式中变量、数值和函数之间的空格,自己手动加的话,少的还行,多的就不太方便了
RicardoM
2016-11-22 12:21:51 +08:00
@phoneli 是通过插件,还是 Vim 的 imap 命令?
psklf
2016-11-22 12:41:26 +08:00
@RicardoM 你这要求就不适合用 vim

要不然试试 code blocks
iCyMind
2016-11-22 12:54:57 +08:00
什么叫格式化当前语句?写的时候难道不是自动缩进吗
RicardoM
2016-11-22 13:21:53 +08:00
@iCyMind 缩进是自动的,我的意思是:假如当前行是 `int i=0` ,我输完分号后变为 `int i = 0;`
introom
2016-11-22 13:24:24 +08:00
@RicardoM 刷题为什么不直接网页呢?
RicardoM
2016-11-22 14:23:24 +08:00
@introom 刷题可以在那几个网站上写,但还是不能解决这个代码格式化的问题吧,网站上只是能自动缩进
phoneli
2016-11-22 14:57:08 +08:00
@RicardoM 准确来说,插件其实就是一段代码。代码里面可以用 imap ,也可以不用的。我记得, vim 好像有一个监听事件的。输入回车,触发一个函数的。:)
chemzqm
2016-11-22 15:22:18 +08:00
:h gq
:h equalprg
newtype0092
2016-11-22 15:56:19 +08:00
我觉得中间的空格手动加。我一直这么写,没觉得不方便,因为空格这东西一天两天你还要想,时间长了完全就是本能了,你想想你用中文输入的时候是不是要刻意记得按空格选词。
而且你这么配置好,习惯了以后,不管是换编辑器、换 IDE 还是换语言,都会增加障碍。
ruoxuanfeng
2016-11-22 17:20:17 +08:00
最近在尝试 astyle ,有 vim 插件,支持自动格式化, lz 可以试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX