V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RicardoM
V2EX  ›  Vim

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

  •  
  •   RicardoM · 2016-11-22 10:09:58 +08:00 · 4962 次点击
    这是一个创建于 2957 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    要不然试试 code blocks
    iCyMind
        13
    iCyMind  
       2016-11-22 12:54:57 +08:00 via Android
    什么叫格式化当前语句?写的时候难道不是自动缩进吗
    RicardoM
        14
    RicardoM  
    OP
       2016-11-22 13:21:53 +08:00 via Android
    @iCyMind 缩进是自动的,我的意思是:假如当前行是 `int i=0` ,我输完分号后变为 `int i = 0;`
    introom
        15
    introom  
       2016-11-22 13:24:24 +08:00 via Android
    @RicardoM 刷题为什么不直接网页呢?
    RicardoM
        16
    RicardoM  
    OP
       2016-11-22 14:23:24 +08:00 via Android
    @introom 刷题可以在那几个网站上写,但还是不能解决这个代码格式化的问题吧,网站上只是能自动缩进
    phoneli
        17
    phoneli  
       2016-11-22 14:57:08 +08:00
    @RicardoM 准确来说,插件其实就是一段代码。代码里面可以用 imap ,也可以不用的。我记得, vim 好像有一个监听事件的。输入回车,触发一个函数的。:)
    chemzqm
        18
    chemzqm  
       2016-11-22 15:22:18 +08:00
    :h gq
    :h equalprg
    newtype0092
        19
    newtype0092  
       2016-11-22 15:56:19 +08:00   ❤️ 1
    我觉得中间的空格手动加。我一直这么写,没觉得不方便,因为空格这东西一天两天你还要想,时间长了完全就是本能了,你想想你用中文输入的时候是不是要刻意记得按空格选词。
    而且你这么配置好,习惯了以后,不管是换编辑器、换 IDE 还是换语言,都会增加障碍。
    ruoxuanfeng
        20
    ruoxuanfeng  
       2016-11-22 17:20:17 +08:00   ❤️ 1
    最近在尝试 astyle ,有 vim 插件,支持自动格式化, lz 可以试试
    skywind3000
        21
    skywind3000  
       2016-11-23 19:50:09 +08:00
    现在的同学们写点代码依赖自动化到这种地步了么?以前 DOS 下敲代码时,有个 autoindent 就算不错了。
    RicardoM
        22
    RicardoM  
    OP
       2016-11-23 20:03:39 +08:00
    @skywind3000 😂被 visual studio 惯坏了
    xiaohanqing
        23
    xiaohanqing  
       2016-12-19 23:58:10 +08:00 via Android   ❤️ 1
    :help cinkeys
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:56 · PVG 19:56 · LAX 03:56 · JFK 06:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.