linux | 批量执行emacs/vi内部命令

Posted 32768Hz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux | 批量执行emacs/vi内部命令相关的知识,希望对你有一定的参考价值。

最近在看一些tcl文件,但这些文件的格式并不规整。在emacs中可以使用命令(C-x h,C-M-\)对文件内容进行格式化操作(verilog、tcl等格式)。但这次需要处理的tcl 文件比较多,希望找一个命令,可以不用打开文件,就使用emacs的命令对文件进行格式化操作(程序员就要懒到极致)。

经各种百度/google也没有找到这样的命令,难道我这个需求真的是伪需求?

使用emacs -help,可以知道emacs有--batch模式。

-f 后跟一个function;

-l 可以跟一个lisp语言写的文件;

但并不清楚如何将emac 内部命令(C-x h)和function或lisp代码对应起来,自己也不想再学一个lisp语言。

最后在一个网站上发现-f 后跟的function 和内部命令是有一定的对应关系的。

参考网址:

https://www.computerhope.com/unix/uemacs.htm

比如上面的(C-x h) 命令,对应的解释是:

C-x h  Move point to the beginning of the buffer, and set mark at the end (mark-whole-buffer).

C-M-\  Indent all the lines in the region, as though you had typed <TAB> at the beginning of each line (indent-region).

因此,本来在emacs打开后才能在emacs中执行的命令,现在在命令行下就能执行。具体执行命令如下:

emacs xxx.tcl --batch -f mark-whole-buffer -f indent-region -f save-buffer


顺便也说一下vim的一些对应的命令:

  1. gg=G 可以对vim打开的文件进行格式化

  2. vim lc_shell.log -c ":1d" -c ":wq" -v (删除文件第一行后,保存并退出)



以上是关于linux | 批量执行emacs/vi内部命令的主要内容,如果未能解决你的问题,请参考以下文章

ssh批量登录并执行命令(python实现)

Linux基础命令(上)

sh, 批量执行Linux命令

MongoDB怎样批量执行命令

Python批量操作Linux服务器执行命令

带你了解Linux基础命令(适合想学习Linux的小伙伴)