【问题标题】:Executing vim commands without interactive mode在没有交互模式的情况下执行 vim 命令
【发布时间】:2011-02-02 17:27:48
【问题描述】:

我需要对数千个文件执行 vim 命令,而不会受到交互模式缓慢的影响。我试过了:

找到... | xargs vim '+设置文件编码=utf-8 | X'

对于文件...;做 vim '+设置文件编码=utf-8 | x' $文件 完毕

但它太慢了,我有警告

Vim:警告:输出不是终端

vim 中是否无法避免交互模式?

ps:否则我可以使用 iconv,但它会导致文件错误 > 32 ko

iconv --from-code=ISO-8859-1 --to-code=UTF-8 $file -o $file

【问题讨论】:

  • "但它会导致文件 > 32 ko 出现错误" -- 是否应该读为 "kb" 而不是 "ko"?

标签: linux unix vim encoding


【解决方案1】:

我愿意:

find .... -print0 | xargs -0 vim -c 'argdo set fenc=utf8' -c 'wqa'

【讨论】:

  • 我的完整查找命令是find -exec file -i {} \; | grep iso-8859 | awk -F ':' '{print $1}',所以-print0 | xargs -0 很难。通过xargs vim -c 'argdo set fenc=utf8' -c 'wqa' 重定向,终端的行为很奇怪(从vim 中转义字符?)。但是在 for 循环中,它工作得很好。感谢回复
【解决方案2】:

文件类型、语法和缩进插件可能是让你慢下来的原因。 这些是在你的 ~/.vimrc 中指定的,通常看起来像这样:

filetype plugin indent on
  • 您可以尝试将其注释掉,或者
  • 你可以在没有插件和 ~/.vimrc 的情况下启动 Vim,但要保持在不兼容模式下:

    vim -Nu NONE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 2020-05-14
    • 2011-03-27
    • 1970-01-01
    • 2016-11-01
    • 2014-08-22
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多