【问题标题】:vim -q not taking result from grep in bashvim -q 没有从 bash 中的 grep 获取结果
【发布时间】:2022-11-25 03:54:03
【问题描述】:

我是 bash 编程的新手,并尝试将 grep 的结果添加到 vim -q 以便我可以 open the result in vim 但是 vim 抛出错误

# search and add result to vim quickfix
fury(){
   local pat=$1
   local l="${2:-.}"
   local result=$(grep -n "$pat" $l)
   if [ -z "$result" ]
   then
        echo "no result found"
   else
        vim -q <($result) +:copen
    fi
}

【问题讨论】:

  • vim -q &lt;(echo "$result") +:copen
  • 这似乎有效@Jetchisel

标签: bash search vim grep zsh


【解决方案1】:

抛出错误的不是 Vim,而是你的 shell。并且有充分的理由。

那个 &lt;() 东西叫做 "Process Substitution" 并且它期望命令在括号之间,如:

$ diff <(ls /tmp/foo) <(ls /tmp/bar)

但是您将 grep 的输出存储在一个变量中,并在括号之间使用该变量。该输出只是“文本”,可能很长。它不是命令,因此与此无关。

这将是一个正确的命令:

$ vim -q <(echo "$result")

【讨论】:

  • 啊明白了,谢谢你的解释@romainl 只是好奇我们是否已经将输出存储在一个变量中我认为我不需要替换有没有其他方法可以完成这个?
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多