【问题标题】:On Windows VIM external grep command does not support accented characters在 Windows VIM 上,外部 grep 命令不支持重音字符
【发布时间】:2019-08-24 19:57:25
【问题描述】:

在 Windows 上的 VIM 中,处理 UTF-8 编码文件时,搜索带有重音字符的单词不会找到该单词。

我使用 UTF-8 编码文件并在文件中写入“éçà”。我保存文件,然后在该字符串上启动一个外部 grep。找不到文件。

在 VIM 中,首先打开 quickfix 窗口以显示匹配项:

:copen

将光标放在éçà(已保存文件)上,运行

:grep "<cWORD>" *

应该找不到匹配项

但是,使用 vimgrep (internal grep) 可以找到该文件(但是这个内部命令非常缓慢)。

跑步

:vimgrep "<cWORD>" *

找到匹配项。

这一定与字符转换为命令行有关,但我无法弄清楚,即使在VIM中玩过iconv命令。

有没有办法正确配置 VIM,以便它可以正确 grep 带有重音符号的文件(无需通过内部 grep 这么慢)? 我在网上找遍了,没有一个明确的结论。

【问题讨论】:

  • 抱歉代码被卡住了,它应该是: :grep "" * 和 :vimgrep "" *
  • 如果您在命令行中使用包含重音符号的 UTF-8 或 Unicode 字符串运行 grep,它是否有效?你安装了哪个版本的grep?从 Windows 环境来看,这些信息可能很重要,因为有很多方法可以在那里运行 Vim 和其他 Unix 工具......
  • 你好,不,我也不能让它在命令行上工作,即使使用 findstr。到目前为止,它似乎可以与 msys64 一起使用,所以可能是 Windows 命令行限制了重音转换。我会让你知道它是怎么回事,现在尝试设置 vim 以使用 msys64 作为它的 shell

标签: windows vim command-line


【解决方案1】:

我最终用一个宏在一个临时文件中编写了重音搜索模式,然后使用临时文件启动 grep。

但是,我找到了另一种使用“ag”而不是 grep 的解决方案,但是通过支持重音的版本,它可以在我的基于 Windows 的 gvim 中正常工作。

https://github.com/JFLarvoire/the_silver_searcher/releases

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 2014-07-02
    • 1970-01-01
    • 2021-07-12
    • 2016-08-30
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多