zoukankan      html  css  js  c++  java
  • Sublime Text 编辑器 插件 之 "Sublime Alignment" 详解

    作者:shede333
    主页:http://my.oschina.net/shede333
    版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0][]


    #Sublime Text 编辑器 插件 之

    "Sublime Alignment" 详解

    Sublime Alignment 主要用于代码对齐,最新版据说已经集成了这个插件。 下载地址:


    插件安装方式、以及较好的插件推荐,如下:

    Sublime Text 2 入门及技巧 | Lucifr

    编码神器 Sublime Text 包管理工具及扩展大全 - 开源中国社区


    Mac上的设置文件位置:
    左上角Sublime Text -> Preferences -> Package Settings ->Alignment 如果没有最后的"Alignment"选项,说明你还没有安装此插件。

    这里面有5个选项:

    • Settings- Default
    • Settings- User
    • Settings- Syntax Specific - User
    • Key Bildings - Default
    • Key Bildings - User

    带有后缀Default的,为默认设置,每次升级插件都会重置这里的设置。所以尽量不要修改这里,否则升级会丢失你原先的设置。

    带有后缀User的,为用户自定义设置,你可以把Default里面的设置全部复制一份到这里,然后再修改,这里存在的设置选项会覆盖Default里面的,即User的优先级更高。

    Key Bildings为快捷键设置,默认的快捷键很有可能因为和其他快捷键冲突而无效, 所以及可以在Key Bildings - User里重新设置(格式可以仿照Default里的写法)。
    此快捷键是用来 实现对齐的。


    这个插件的默认设置Settings- Default如下:

    {
        // If the indent level of a multi-line selection should be aligned
        "align_indent": true,
    
        // If indentation is done via tabs, set this to true to also align
        // mid-line characters via tabs. This may cause alignment issues when
        // viewing the file in an editor with different tab width settings. This
        // will also cause multi-character operators to be left-aligned to the
        // first character in the operator instead of the character from the
        // "alignment_chars" setting.
        "mid_line_tabs": false,
    
        // The mid-line characters to align in a multi-line selection, changing
        // this to an empty array will disable mid-line alignment
        "alignment_chars": ["="],
    
        // If the following character is matched for alignment, insert a space
        // before it in the final alignment
        "alignment_space_chars": ["="],
    
        // The characters to align along with "alignment_chars"
        // For instance if the = is to be aligned, there are a number of
        // symbols that can be combined with the = to make an operator, and all
        // of those must be kept next to the = for the operator to be parsed
        "alignment_prefix_chars": [
            "+", "-", "&", "|", "<", ">", "!", "~", "%", "/", "*", "."
        ]
    }
    

    ##参数详解

    下面为原始测试数据

    int aa = 1;
        char bb = 'a';
            float fff = 2;
    unsigned int d = 1;
    

    ###"align_indent":

    开关量,默认为true,

    • true,则把选择的多行的 不同缩进级别也变成相同的缩进(最大的缩紧级别),结果如下:
            int aa = 1;
            char bb = 'a';
            float fff = 2;
            unsigned int d = 1;
    
    • flase,只是对齐,不改变缩进级别
    int aa            = 1;
        char bb       = 'a';
            float fff = 2;
    unsigned int d    = 1;
    

    ###"mid_line_tabs"

    开关量,默认为false。
    如果你的文本是使用Tab键缩进排版,设置该变量为true时,那么该插件在对齐文本的时候也使用Tab键来对齐缩进。
    但是这样可能会出现问题,因为Tab键在不同的编辑器上代表的空格数可能不同(Sublime 是代表4个空格), 当你使用别的编辑器打开该文件时,简而言之,就是排版可能就不是对齐的了。


    ###"alignment_chars"

    对齐字符

    这是一个数组,可以这样设置多个字符:alignment_chars": ["=","*","a"]
    默认只有“=”字符,即alignment_chars": ["="]
    数组里面的字符就是放在中线对齐的字符。
    如下面都把“=”排成一列中线对齐

            int aa         = 1;
            char bb        = 'a';
            float fff      = 2;
            unsigned int d = 1;
    

    例如设置里增加“*”号,即:alignment_chars": ["=","*"]
    结果如下:

    原文:

    int *aa = 1;
        char *bb = 'a';
            float *fff = 2;
    unsigned int *d = 1;
    

    排列对齐后:(把“*”号排成对齐的一列)

            int          *aa = 1;
            char         *bb = 'a';
            float        *fff = 2;
            unsigned int *d = 1;
    

    ###"alignment_space_chars"

    和**"alignment_chars"**一样,也是数组格式 默认值包含“=”号,即:alignment_space_chars": ["*","="]

    就是这个数组包含上面**"alignment_chars"里的字符, 对齐后,在其前面增加一个空格。
    如果这里不包含
    "alignment_chars"**里的字符,对齐后,在其前面没有空格。

    可以这样说, **"alignment_space_chars"数组是"alignment_chars"**数组的子集。

    原文还在文章的起始处,这里设置包含“=”,
    alignment_space_chars": ["="]
    结果如下:

            int aa         = 1;
            char bb        = 'a';
            float fff      = 2;
            unsigned int d = 1;
    

    这里设置不包含任何字符,
    alignment_space_chars": []
    结果如下:

            int aa        = 1;
            char bb       = 'a';
            float fff     = 2;
            unsigned int d= 1;
    

    ###"alignment_prefix_chars"

    即:前缀字符 默认设置:
    "alignment_prefix_chars": ["+", "-", "&", "|", "<", ">", "!", "~", "%", "/", "*", "."]

    对齐字符(即alignment_chars"里的字符),可以拥有前缀字符。
    例如"="号字符前可以拥有以上字符作为前缀。

    原文设置如下:(这里的前缀字符有 "!"、"<"符号)

    int aa = 1;
        char bb != 'a';
            float fff <= 2;
    unsigned int d = 1;
    

    对齐后如下:(即把前缀字符+对齐字符一起当作对齐字符来对待)

            int aa         = 1;
            char bb        != 'a';
            float fff      <= 2;
            unsigned int d = 1;
    

    ##总结

    可按照以上的参数说明,自己增加对齐的字符来增强功能。
    我一般需要在对齐字符前面增加一个空格,
    所以我一般就保持alignment_chars 数组和 alignment_space_chars数组一致。即在所有的对齐字符前面都增加一个空格。

    转载自:https://my.oschina.net/shede333/blog/170536

  • 相关阅读:
    Enterprise Library 2.0 技巧(4):如何用编程的方法来配置Logging Application Block
    Castle IOC容器实践之EnterpriseLibrary Configuration Facility
    Castle开发系列文章上了Castle的官方网站
    DataGridView也泛型?——一个不错的DataGridView控件
    Enterprise Library for .NET Framework 3.0 what would you like to see?
    设计是否可以更合理一点?——关于ORM中业务实体的讨论
    Enterprise Library 2.0 技巧(2):如何将配置信息保存到数据库中
    关于Castle IOC容器自动装配的问题
    数据库重构与数据库单元测试
    BLINQ初体验
  • 原文地址:https://www.cnblogs.com/chengqi521/p/7596259.html
Copyright © 2011-2022 走看看