multi-cursor做代码对齐

.title { text-align: center; margin-bottom: .2em }
.subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 }
.todo { font-family: monospace; color: red }
.done { font-family: monospace; color: green }
.priority { font-family: monospace; color: orange }
.tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal }
.timestamp { color: #bebebe }
.timestamp-kwd { color: #5f9ea0 }
.org-right { margin-left: auto; margin-right: 0px; text-align: right }
.org-left { margin-left: 0px; margin-right: auto; text-align: left }
.org-center { margin-left: auto; margin-right: auto; text-align: center }
.underline { text-decoration: underline }
#postamble p,#preamble p { font-size: 90%; margin: .2em }
p.verse { margin-left: 3% }
pre { border: 1px solid #ccc; padding: 8pt; font-family: monospace; overflow: auto; margin: 1.2em }
pre.src { position: relative; overflow: visible; padding-top: 1.2em }
pre.src::before { display: none; position: absolute; background-color: white; top: -10px; right: 10px; padding: 3px; border: 1px solid black }
pre.src:hover::before { display: inline }
pre.src-asymptote::before { content: "Asymptote" }
pre.src-awk::before { content: "Awk" }
pre.src-C::before { content: "C" }
pre.src-clojure::before { content: "Clojure" }
pre.src-css::before { content: "CSS" }
pre.src-D::before { content: "D" }
pre.src-ditaa::before { content: "ditaa" }
pre.src-dot::before { content: "Graphviz" }
pre.src-calc::before { content: "Emacs Calc" }
pre.src-emacs-lisp::before { content: "Emacs Lisp" }
pre.src-fortran::before { content: "Fortran" }
pre.src-gnuplot::before { content: "gnuplot" }
pre.src-haskell::before { content: "Haskell" }
pre.src-java::before { content: "Java" }
pre.src-js::before { content: "Javascript" }
pre.src-latex::before { content: "LaTeX" }
pre.src-ledger::before { content: "Ledger" }
pre.src-lisp::before { content: "Lisp" }
pre.src-lilypond::before { content: "Lilypond" }
pre.src-lua::before { content: "Lua" }
pre.src-matlab::before { content: "MATLAB" }
pre.src-mscgen::before { content: "Mscgen" }
pre.src-ocaml::before { content: "Objective Caml" }
pre.src-octave::before { content: "Octave" }
pre.src-org::before { content: "Org mode" }
pre.src-oz::before { content: "OZ" }
pre.src-plantuml::before { content: "Plantuml" }
pre.src-processing::before { content: "Processing.js" }
pre.src-python::before { content: "Python" }
pre.src-R::before { content: "R" }
pre.src-ruby::before { content: "Ruby" }
pre.src-sass::before { content: "Sass" }
pre.src-scheme::before { content: "Scheme" }
pre.src-screen::before { content: "Gnu Screen" }
pre.src-sed::before { content: "Sed" }
pre.src-sh::before { content: "shell" }
pre.src-sql::before { content: "SQL" }
pre.src-sqlite::before { content: "SQLite" }
pre.src-forth::before { content: "Forth" }
pre.src-io::before { content: "IO" }
pre.src-J::before { content: "J" }
pre.src-makefile::before { content: "Makefile" }
pre.src-maxima::before { content: "Maxima" }
pre.src-perl::before { content: "Perl" }
pre.src-picolisp::before { content: "Pico Lisp" }
pre.src-scala::before { content: "Scala" }
pre.src-shell::before { content: "Shell Script" }
pre.src-ebnf2ps::before { content: "ebfn2ps" }
pre.src-cpp::before { content: "C++" }
pre.src-abc::before { content: "ABC" }
pre.src-coq::before { content: "Coq" }
pre.src-groovy::before { content: "Groovy" }
pre.src-bash::before { content: "bash" }
pre.src-csh::before { content: "csh" }
pre.src-ash::before { content: "ash" }
pre.src-dash::before { content: "dash" }
pre.src-ksh::before { content: "ksh" }
pre.src-mksh::before { content: "mksh" }
pre.src-posh::before { content: "posh" }
pre.src-ada::before { content: "Ada" }
pre.src-asm::before { content: "Assembler" }
pre.src-caml::before { content: "Caml" }
pre.src-delphi::before { content: "Delphi" }
pre.src-html::before { content: "HTML" }
pre.src-idl::before { content: "IDL" }
pre.src-mercury::before { content: "Mercury" }
pre.src-metapost::before { content: "MetaPost" }
pre.src-modula-2::before { content: "Modula-2" }
pre.src-pascal::before { content: "Pascal" }
pre.src-ps::before { content: "PostScript" }
pre.src-prolog::before { content: "Prolog" }
pre.src-simula::before { content: "Simula" }
pre.src-tcl::before { content: "tcl" }
pre.src-tex::before { content: "TeX" }
pre.src-plain-tex::before { content: "Plain TeX" }
pre.src-verilog::before { content: "Verilog" }
pre.src-vhdl::before { content: "VHDL" }
pre.src-xml::before { content: "XML" }
pre.src-nxml::before { content: "XML" }
pre.src-conf::before { content: "Configuration File" }
table { border-collapse: collapse }
caption.t-above { caption-side: top }
caption.t-bottom { caption-side: bottom }
td,th { vertical-align: top }
th.org-right { text-align: center }
th.org-left { text-align: center }
th.org-center { text-align: center }
td.org-right { text-align: right }
td.org-left { text-align: left }
td.org-center { text-align: center }
dt { font-weight: bold }
.footpara { display: inline }
.footdef { margin-bottom: 1em }
.figure { padding: 1em }
.figure p { text-align: center }
.inlinetask { padding: 10px; border: 2px solid gray; margin: 10px; background: #ffffcc }
#org-div-home-and-up { text-align: right; font-size: 70%; white-space: nowrap }
textarea { }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00 }
.org-info-js_info-navigation { border-style: none }
#org-info-js_console-label { font-size: 10px; font-weight: bold; white-space: nowrap }
.org-info-js_search-highlight { background-color: #ffff00; color: #000000; font-weight: bold }
.org-svg { width: 90% }
code { color: #FF0000 }
pre.src { background-color: #002b36; color: #839496 }

multi-cursor做代码对齐

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

::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 ,然后,使用正则表达式进行对齐,但是,那个还是比较麻烦的。

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

这样,我们只需要先创建一个multi-cursor:

然后,跳到最后面:

再用 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 周四 10:35

Emacs 26.0.50.4 (Org mode 9.0.4)

Validate

时间: 2024-08-25 02:59:46

multi-cursor做代码对齐的相关文章

VS中代码对齐等快捷键

在VS2008中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐. 注意:要先按下Ctrl和K,再按下F,因为Ctrl+F是查找的快捷键. 也可以先按下Ctrl+K,再按下Ctrl+F. 另外,可以在"工具->选项->文本编辑器->C/C++->制表符"选项卡中设置缩进选项. 英文版本的路径为:Tools->Options->Text Editor->C/C++->Tabs 注释选定代码:Ctrl+K+C 取消注释选定的代码:

2、IDEA下Git做代码管理

2.IDEA下Git做代码管理 1.介绍 1.1 Git概述 Git是类似于SVN等代码管理软件,使用分布式技术实现.Github是互联网代码仓库,每个人可以在上面创建自己的仓库,使用git完成同github仓库的代码同步等管理工作. IntelliJ idea->Git: 使用 Git->GitHub: 同步资源 1.2 Git逻辑架构 git架构上分为远程仓库.本地仓库和工作空间.远程仓库就是位于GitHub上的仓库,本地仓库是为用户本机的仓库目录,工作空间是用户开发所处的目录.三者关系与

vs code代码对齐快捷键

vscode缩进快捷键: 选中文本: Ctrl  +  [      和   Ctrl  +  ]     实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift  +  Alt  + F     实现代码的对齐: 原文地址:https://www.cnblogs.com/jxst441192/p/9876342.html

XAlign:用于代码对齐的Xcode插件

除下面的插件对齐,xcode自带有cmd+v,在没有复制或者剪切的情况下,直接按cmd+v会有着对齐参数标签冒号的作用. XAlign 是一个 Xcode 的实用插件,用于对齐规范代码.除了插件作者 qfish 提供的 3 种对齐格式,还可以自定义任意你想要的格式. 示例 qfish 分享的 3 张示例图( Gif ),如下: 1. 按首个 = 对齐 2. 按宏定义群组对齐 3. 按属性群组对齐 安装 1. 自动安装 $ curl github.so/XAlign/build/install.s

uva-1593 代码对齐

题意如下: 输入若干行代码,要求各列单词的左边界对齐且尽量靠左. 单词之间至少要空一格.每个单词不超过80个字符, 每行不超过180个字符,一共最多1000行. 注意输出时每行的最后一列后面没有空格符. 代码如下:代码中有详细的注释! #include<iostream> #include<sstream> #include<string> #include<vector> using namespace std; vector<string>

sublime text2 配置代码对齐快捷键

menu under Preferences → Key Bindings – User [{"keys": ["ctrl+shift+r"], "command": "reindent" , "args": {"single_line": false}}] 保存马上生效,并且不需要选中代码,可以直接用命令ctrl+shift+r就能对齐代码了

使用tfs online做代码片段笔记管理

我把我的代码片段用tfs online管理,之前一直犹豫使用印象笔记还是有道笔记,现在决定还是用tfs管理,codeplex 和git开源的管理笔记别人都能看见 网址tfs.visualstudio.com 注册个账号 本地建一个网站代码片段,这样在vs上做笔记管理可以直接签入也可以在vs搜索代码片段,tfs onlien在线也可以搜索代码需要安装一个codesearch

vim插件之tabular,代码对齐强迫症必备

本周整理一批别人写的代码,要处理好所有的注释和缩进. 碰到那种大片的赋值或者注释或者宏定义,但又没对齐的,简直太难看了. 于是手工对了几个,觉得确实不是人干的活,心想这种需求应该有工具自动搞定才对啊,于是google了一把 果然,插件在此,tabular https://github.com/godlygeek/tabular 再配合多行编辑插件vim-multiple-cursors,搬砖效率成倍提升啊 https://github.com/terryma/vim-multiple-curso

代码对齐问题

个人比较习惯用sourceinsight编辑代码,然后在MDK内编译,再下载到板子上,之前没发现对齐的问题,最近发现tab键对齐还是有问题的,sourceinsight的tab是4字符,而mdk的tab是2字符,所以缩进的时候会对齐出问题: 按照如下设置后MDK的tab缩进就好: 另外在sourceinsight内设置tab转换成空格字符 不过写代码还是最好用空格,少用tab缩进,我个人还是爱好用tab缩进,一次缩进4个字符,方便快捷.