Vim 写 C++,如何在输完分号; 后自动格式化当前行的代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
RicardoM
V2EX    Vim

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

  •  
  •   RicardoM Nov 22, 2016 5725 views
    This topic created in 3446 days ago, the information mentioned may be changed or developed.

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

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

    要不然试试 code blocks
    iCyMind
        13
    iCyMind  
       Nov 22, 2016 via Android
    什么叫格式化当前语句?写的时候难道不是自动缩进吗
    RicardoM
        14
    RicardoM  
    OP
       Nov 22, 2016 via Android
    @iCyMind 缩进是自动的,我的意思是:假如当前行是 `int i=0` ,我输完分号后变为 `int i = 0;`
    introom
        15
    introom  
       Nov 22, 2016 via Android
    @RicardoM 刷题为什么不直接网页呢?
    RicardoM
        16
    RicardoM  
    OP
       Nov 22, 2016 via Android
    @introom 刷题可以在那几个网站上写,但还是不能解决这个代码格式化的问题吧,网站上只是能自动缩进
    phoneli
        17
    phoneli  
       Nov 22, 2016
    @RicardoM 准确来说,插件其实就是一段代码。代码里面可以用 imap ,也可以不用的。我记得, vim 好像有一个监听事件的。输入回车,触发一个函数的。:)
    chemzqm
        18
    chemzqm  
       Nov 22, 2016
    :h gq
    :h equalprg
    newtype0092
        19
    newtype0092  
       Nov 22, 2016   1
    我觉得中间的空格手动加。我一直这么写,没觉得不方便,因为空格这东西一天两天你还要想,时间长了完全就是本能了,你想想你用中文输入的时候是不是要刻意记得按空格选词。
    而且你这么配置好,习惯了以后,不管是换编辑器、换 IDE 还是换语言,都会增加障碍。
    ruoxuanfeng
        20
    ruoxuanfeng  
       Nov 22, 2016   1
    最近在尝试 astyle ,有 vim 插件,支持自动格式化, lz 可以试试
    skywind3000
        21
    skywind3000  
       Nov 23, 2016
    现在的同学们写点代码依赖自动化到这种地步了么?以前 DOS 下敲代码时,有个 autoindent 就算不错了。
    RicardoM
        22
    RicardoM  
    OP
       Nov 23, 2016
    @skywind3000 被 visual studio 惯坏了
    xiaohanqing
        23
    xiaohanqing  
       Dec 19, 2016 via Android   1
    :help cinkeys
    About     Help     Advertise     Blog     API     FAQ     Solana     2782 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 73ms UTC 14:01 PVG 22:01 LAX 07:01 JFK 10:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86