Grep

無法在 Vim 中 grep 源文件

  • June 30, 2009

我有我在我的文件中獲取的文件。當我在具有這些來源的文件中時,我想搜尋它們。

我跑不成功

!bufdo grep source 

!bufdo grep source %

.zshrc 的範例,它來源於我想要 grep 的路徑

# ~/bin/shells/Zsh/describtion
# ~/bin/shells/Zsh/bugs
# ./bin/shells/zsh/alphaOptions

. /Users/masi/bin/shells/.personal/ssh
. /Users/masi/bin/shells/.personal/shellVariables
. /Users/masi/bin/shells/.personal/alias

. /Users/masi/bin/shells/externalPrograms

. /Users/masi/bin/shells/codingSettings

# . /Users/masi/bin/shells/OS/ubuntu/alias

# ~/bin/shells/Zsh/sources

假設您在我的 .zshrc 中。你想在 Vim 的所有源文件中搜尋單詞“manual”。

您將如何僅在源文件中搜尋手冊一詞?

這對我有用:

:! grep manual `sed -n 's/^\. \(.*\)/\1/p' %`

sed 部分查找源文件並將它們作為參數提供給 grep。

為避免每次都必須鍵入此命令,您可以創建如下命令:

:command! -nargs=1 SourceGrep :! grep <args> `sed -n 's/^\. \(.*\)/\1/p' %`

搜尋多個單詞時要小心,您必須使用引號。例如:

:SourceGrep "sudo ssh"

編輯:

要搜尋帶有 ‘source’ 和 ‘.’ 的行:

:! grep manual `sed -rn 's/^(\.|source) (.*)/\2/p' %`

該命令將如下所示:

:command! -nargs=1 SourceGrep :! grep <args> `sed -rn 's/^(source|\.) (.*)/\2/p' %`

引用自:https://serverfault.com/questions/18667