multiple-cursors做代码对齐

*/-->

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

multiple-cursors做代码对齐

假设我们有这样一个文件:

::msgcat::mcset cn "steel" "钢"
::msgcat::mcset cn "al" "铝"
::msgcat::mcset cn "general" "焊缝参数"
::msgcat::mcset cn "FAT" "疲劳等级 *"
::msgcat::mcset cn "Weld type" "焊缝类型"
::msgcat::mcset cn "Weld width" "焊缝宽度"

我们想要让它对齐成如下:

::msgcat::mcset cn "steel"      "钢"
::msgcat::mcset cn "al" "铝"
::msgcat::mcset cn "general" "焊缝参数"
::msgcat::mcset cn "FAT" "疲劳等级 *"
::msgcat::mcset cn "Weld type" "焊缝类型"
::msgcat::mcset cn "Weld width" "焊缝宽度"

当然,我们可以使用 align-regexp ,然后,使用正则表达式进行对齐,但是,那个还是比较麻烦的。

其实,multiple-cursors中有一个命令 mc/vertical-align-with-space ,可以用来进行对齐操作。

这样,我们只需要先创建一个multiple-cursors:

然后,跳到最后面:

再用 sp-backward-sexp ,跳到要对齐的位置:

再执行 mc/vertical-align-with-space ,就可以对齐了:

这样,基本上可以应对很多比较麻烦的对齐。当然,简单的,用空格或者是其他一个符合对齐的工作,可以使用另外一个函数来完成,更加方便:

(defun my-align-regexp-repeated (start stop regexp)
"Like align-regexp, but repeated for multiple columns. See
http://www.emacswiki.org/emacs/AlignCommands"
(interactive "r\nsAlign regexp: ")
(let ((regexp (if (string= regexp "") " " regexp))
(spacing 1)
(old-buffer-size (buffer-size)))
;; If our align regexp is just spaces, then we don't need any
;; extra spacing.
(when (string-match regexp " ")
(setq spacing 0))
(align-regexp start stop
;; add space at beginning of regexp
(concat "\\([[:space:]]*\\)" regexp)
1 spacing t)
;; modify stop because align-regexp will add/remove characters
(align-regexp start (+ stop (- (buffer-size) old-buffer-size))
;; add space at end of regexp
(concat regexp "\\([[:space:]]*\\)")
1 spacing t)
(indent-region start (+ stop (- (buffer-size) old-buffer-size)))))

Date: 2017-02-09 10:19

Created: 2017-02-09 周四 23:12

Emacs 26.0.50.4 (Org mode 9.0.4)

Validate

multiple-cursors做代码对齐的更多相关文章

  1. 完美解决--用VS中的Git做代码管理器,与他人共享代码

    1.创建代码仓库,这里说一下为什么要创建仓库,Git不能够作为源代码管理器,vs中自带的也只能够在本地进行管理,要和他们共享的话必须要有服务器端去存储代码,类似于SVN,它就有客户端和服务器端,这里推 ...

  2. vs code代码对齐快捷键

    vscode缩进快捷键: 选中文本: Ctrl  +  [      和   Ctrl  +  ]     实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift  + ...

  3. [资源]--完美解决--用VS中的Git做代码管理器,与他人共享代码

    1.创建代码仓库,这里说一下为什么要创建仓库,Git不能够作为源代码管理器,vs中自带的也只能够在本地进行管理,要和他们共享的话必须要有服务器端去存储代码,类似于SVN,它就有客户端和服务器端,这里推 ...

  4. VS中代码对齐等快捷键

    在VS2008中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐. 注意:要先按下Ctrl和K,再按下F,因为Ctrl+F是查找的快捷键. 也可以先按下Ctrl+K,再按下Ctrl+F. ...

  5. vs快捷键代码格式化或代码对齐名字

    开发人员,换个电脑后环境要重装,vs的环境也需要重新设置. 快捷键需要重新设置,插件也需要重装,在这里备注下,换个环境就可以直接用了. 由于vs不同版本,代码对齐或者代码格式化的快捷键都不一样,所以导 ...

  6. idea 安装findBugs 可以做代码扫描,也可以导出扫描结果生成扫描报告

    idea 安装findBugs 可以做代码扫描,也可以导出扫描结果生成扫描报告 https://my.oschina.net/viakiba/blog/1838296 https://www.cnbl ...

  7. Gitlab来做代码review

    Gitlab来做代码review 代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现 ...

  8. vim中编辑了代码 但是提示can not write的解决办法和代码对齐办法

    方式1: 1 :w /tmp/xxxx(如果是c文件就.c拉)  保存在/tmp下面 2 从tmp中复制到有权限的目录下面 cp /tmp xxxx ./(当前目录) 方式2::w !sudo tee ...

  9. Cordova Android项目如何做代码混淆

    我想修改build.gradle配置 可是这个文件明确写了// GENERATED FILE! DO NOT EDIT!可是还是试了试: if (cdvReleaseSigningProperties ...

随机推荐

  1. bzoj2521 [Shoi2010]最小生成树

    [Shoi2010]最小生成树 Time Limit: 10 Sec Memory Limit: 128 MB Description Secsa最近对最小生成树问题特别感兴趣.他已经知道如果要去求出 ...

  2. APScheduler的简单记录

    此工具作为 定时任务调度 系统,在日常业务中经常使用,如定时获取第三方数据,定时清理数据 等等: 定时任务 和 业务逻辑 编写方式 一般有2种: 以 定时 清理db数据为例,在flask中,如下: 1 ...

  3. 你了解SEO中的时效性吗?

    你了解SEO中的时效性吗? 本文摘自web前端早读课,侵删. 前言 最近刚好在负责一个新项目,App在还没上线的前提上,PC/WAP可以优先部署相关SEO,这样在后续的推广中得以运用.今日早读文章由腾 ...

  4. 最近开发的项目,遇到用户上传excel文件并导入数据到系统这个需求,而有excel中有的单元格是日期格式,本文介绍怎么从excel中读取日期格式的数据。

    可以先判断单元格的类型,有的日期是字符串存储的,有的是按日期存储的(单元格按数字解析),代码如下: Cell cell = row.getCell(); Date date = null; if (c ...

  5. Spring MVC processing flow

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484057.html DispatcherServlet receives the request. ...

  6. flume源码

    IDEA查看源码 IDEA快捷键 1 查看接口的实现类:Ctrl+Alt+B 选中按快捷键,然后跳到实现类的地方去 2 切换页面:Alt+<- 和 Alt+-> Alt+-> 3 查 ...

  7. 【leetcode】921. Minimum Add to Make Parentheses Valid

    题目如下: 解题思路:上周都在忙着参加CTF,没时间做题,今天来更新一下博客吧.括号问题在leetcode中出现了很多,本题的解题思路和以前的括号问题一样,使用栈.遍历Input,如果是'('直接入栈 ...

  8. atexit函数学习

    函数名: atexit 头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: void atexit(void (*func)( ...

  9. jetson资料

    http://www.waveshare.net/wiki/Jetson_Nano_Developer_Kit http://www.waveshare.net/wiki/JetBot_AI_Kit ...

  10. QC增加Test、Defect字段

    QC--Tools--customization,在Project Entities中增加字段,在Project Lists中编辑Lookup List类型字段的指定值