vim 之批量 处理
来源:互联网 发布:广告优化师面试技巧 编辑:程序博客网 时间:2024/06/14 16:24
GOOGLE: vim 批量 执行 ex脚本;
原文: http://my.oschina.net/alphajay/blog/56286 vim的ex模式介绍
原文: http://man.chinaunix.net/newsoft/vi/doc/usr_26.html
(一) 改动多个文件假定你有个变量名为 "x_cnt" 而你要把他改为 "x_counter"。这个变量在多个 C 文件都被用到了。你需要在所有文件中作此改动。你得这么做。 把所有相关文件放进参数列表::args *.c
这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行置换命令::argdo %s/\
<x_cnt\>
/x_counter/ge | update命令 ":argdo" 把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。 作为参数的替换命令 "%s" 作用于所有文本行。它用 "\
<x_cnt\>
" 来查找"x_cnt"。 "\<" 和 "\>
" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 或 "x_cnt2"。
替换命令的标记中包含 "g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"。
标记 "e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 命令就会在遇到第一个找不到 "x_cnt" 的文件时中断。
字符 "|" 分隔两条命令。后面的 "update" 命令将那些有改动的文件存盘。如果没有 "x_cnt" 被改成 "x_counter",这个命令什么也不做。还有一个 ":windo" 命令,用于在所有视窗内执行其参数所规定的命令。以及 ":bufdo"命令,对所有缓冲执行其参数所规定的命令。使用中要小心,因为你在缓冲列表中的文件数量可能超过你能想像的。请用 ":buffers" 命令 (或 ":ls") 来检查缓冲列表。
(二)
在 shell script 里使用 Vim假定你要在很多文件内把字符串 "-person-" 改成 "Jones",然后把它们打印出来。你该怎么做? 一种方法是键入许许多多命令。另一种是写个 shell 脚本来完成这件工作。 作为一个可视的交互式的编辑器,Vim 在执行普通模式命令时表现得极为出色。然而在批量处理时,普通模式命令无法产生简洁的带有注释的命令文件; 在此,你该转而利用 Ex 模式。该模式为你提供一种友好的命令行介面,方便你把命令写进一个批处理文件。("Ex 命令" 无非是命令行 (:) 命令的另一个名称。) 以下就是你所需要的 Ex 模式命令:%s/-person-/Jones/g
write tempfile
quit
你把这些命令放进文件 "change.vim" 里。现在就用这个 shell 脚本在批量模式下运行编辑器:
for file in *.txt; do
vim -e -s $file < change.vim
lpr -r tempfile
done
循环 for-done 是一个 shell 结构,用来重复执行循环结构内的两行命令,而变量$file 则在每次循环时被设成不同的文件名。 脚本第二行的作用是对文件 $file 运行 Vim 且在 Ex 模式下 (参数 -e ),并从文件 "change.vim" 读取命令。 参数 -s 告诉 Vim 运行在沉默模式下。换言之,不要持续不断的发出 :prompt,或针对那个问题发出的任何别的提示。 命令 "lpr -r tempfile" 打印执行中产生的文件 "tempfile" 并把它删除 (是参数 -r 的作用)。从 标 准 输 入 读 取Vim 能从标准输入读取文本。由于通常从那里读取的是命令,你得告诉 Vim 你读的是文本。这需要在通常是文件名的地方传送一个参数 "-"。 例如:
ls | vim -
这个命令让你编辑 "ls" 命令的输出结果,而不必先把那些输出文本存入一个文件。 如果你从标准输入读取文本,那么你可以用参数 "-S" 来读取脚本:
producer | vim -S change.vim -
普 通 模 式 脚 本如果你真的要在脚本内利用普通模式命令,你可以这样来用:
vim -s script file.txt ..。
注意: 当 "-s" 不与 "-e" 一起用时,它的意思是不同的。此时,它 的意思是把文件 "script" 里的命令当作普通模式命令来执行。 而与 "-e" 一起用时,它的意思是保持沉默,并不会把下一个参数视为文件名。文件 "script" 里的命令就像你键入它们那样得到执行。别忘了分行符被解释成按下回车键<Enter>
。在普通模式下该键把光标移到下一行。
要创建这么一个脚本你可以编辑这个脚本文件,键入那些命令。你得想一想每个命令会产生什么样的结果。这可不那么容易。另一种方法是在你手动执行那些命令时把它们记录下来。 你可以采用下面的方法:vim -w script file.txt ..。
所有键入的字符都将被写进文件 "script"。如果你犯了个小错误,不妨继续输入。但要记得事后更正一下这个脚本文件。
参数 "-w" 会将新键入的命令附加在一个已存在的脚本文件末尾。这在你需要一点儿一点儿记录该脚本时是很不错的。
但当你要从零开始重新记录你的脚本时,你则需要用 "-W" 参数。 该参数重写任何已存在的文件。
原文: http://man.lupaworld.com/content/manage/vi/doc/starting.html
-nb -nb={fname}
-nb:{hostname}
:{addr}
:{password}
试图连接到 Netbeans 并成为它的一个编辑器服务器。第二种形式指定 一个文件,从该文件里可以读取连接的信息。第三种形式指定 Netbeans 需要的机器名、地址和密码信息。|netbeans-run|一个使用脚本文件为若干文件里换名的例子: 创建文件 "subs.vi",里面包含替换命令和 :wq 命令::%s/Jones/Smith/g
:%s/Allen/Peter/g
:wq
对所有你要改变的文件执行 Vim:foreach i ( *.let ) vim -s subs.vi $i
- vim 之批量 处理
- vim 批量处理缩进
- vim里批量字符串处理
- JavaMail之批量处理
- Elasticsearch之批量处理。
- vim 宏学习 实现批量处理
- java批量插入数据库之批量处理
- hibernate优化之批量处理
- Hibernate学习之批量处理
- JDBC之事务、批量处理
- hibernate之大批量和批量操作(利用批量处理)
- hibernate之大批量和批量操作(利用批量处理---实例)
- mybatis批量新增系列之类型处理
- ESQL之act=batch批量处理
- Hibernate学习之---Hibernate的批量处理
- 暂记之批量注释插件DoxygenToolkit.vim
- shell浅谈之文本处理工具Vim
- 批量处理
- 【Android应用开发】-(21)Android中巧用反射解决程序兼容性问题
- 微软对测试人员划分的四个标准:
- 关于锁的自动释放
- MVVM模式浅谈
- decode函数应用,对角线算法实现表中数据的行列转换
- vim 之批量 处理
- mysql的join语句的优化方法
- Java工厂模式
- 苹果专利胜诉引Android阵营忧虑
- wave录音程序||linux下录音程序
- 笑话:知识改变命运
- 分享35套非常华丽的免费 PSD 网页按钮素材
- BUG就是BUG,BUG不是灵异
- Objective - C中提供了线程同步和异常处理