创建一个vim脚本,函数或宏,并通过命令行在Windows中运行

时间:2014-09-17 17:25:44

标签: batch-file vim

我创建了一个将文本文件转换为utf8编码的脚本。我可以在vim中运行它。问题是我需要在Windows中通过cmd运行它,我无法弄清楚如何。帮帮我

抱歉我的英文。我来自南美洲,我说西班牙语。

1 个答案:

答案 0 :(得分:1)

替代

除非你真的需要特殊的Vim功能,否则最好使用非交互式工具,如sedawk或Perl / Python / Ruby / < em>您最喜欢的脚本语言。对于简单的字符集转换,请特别查看iconv工具。

也就是说,你可以非交互式地使用Vim:

无声批处理模式

对于非常简单的文本处理(即使用Vim,如增强型'sed'或'awk',可能只是受益于:substitute命令中增强的正则表达式),请使用 Ex-mode

REM Windows
call vim -N -u NONE -n -es -S "commands.ex" "filespec"

注意:静默批处理模式(:help -s-ex)会混淆Windows控制台,因此您可能需要在Vim运行后执行cls清理。

# Unix
vim -T dumb --noplugin -n -es -S "commands.ex" "filespec"

注意:如果"commands.ex"文件不存在,Vim将等待输入;更好地检查它的存在!或者,Vim可以从stdin读取命令。您还可以使用从stdin读取的文本填充新缓冲区,如果使用-参数,则从stderr读取命令。

完全自动化

对于涉及多个窗口的更高级处理,以及Vim的真实自动化(您可以与用户交互或让Vim运行以让用户接管),请使用:

vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"

以下是使用过的参数的摘要:

-T dumb           Avoids errors in case the terminal detection goes wrong.
-N -u NONE        Do not load vimrc and plugins, alternatively:
--noplugin        Do not load plugins.
-n                No swapfile.
-es               Ex mode + silent batch mode -s-ex
                Attention: Must be given in that order!
-S ...            Source script.
-c 'set nomore'   Suppress the more-prompt when the screen is filled
                with messages or output to avoid blocking.