我想獲得一個與 - 運算符下面的Vim命令Sed/Vim中的邏輯與是什麼?
:command! -nargs=1 GrepSource :! grep <args> `sed -n 's/^source \(.*\)/\1/p' %`
,這樣我可以使用命令找貨源在
# source <path>
# . <path>
source <path>
. <path>
我不知道是否有可能或不要讓SED或Vim和運營商。
如何添加AND操作符到SED命令?
我想獲得一個與 - 運算符下面的Vim命令Sed/Vim中的邏輯與是什麼?
:command! -nargs=1 GrepSource :! grep <args> `sed -n 's/^source \(.*\)/\1/p' %`
,這樣我可以使用命令找貨源在
# source <path>
# . <path>
source <path>
. <path>
我不知道是否有可能或不要讓SED或Vim和運營商。
如何添加AND操作符到SED命令?
你可以只用Vim的正則表達式查找<path>
名稱,而不是使用sed
:
:command! -nargs=1 GrepSource :exe printf("!grep '<args>' '%s'", matchstr(getline('.'), '^#\=\s*\%(source\|\.\)\s*\zs\f\+'))
我認爲,命令應該做你想做的。您可以使用一個命令來測試所發生的事情(「exe文件」改爲「回聲」):
:command! -nargs=1 GrepSourceTest :echo printf("!grep '<args>' '%s'", matchstr(getline('.'), '^#\=\s*\%(source\|\.\)\s*\zs\f\+'))
的命令必須在一行中的下列形式之一使用:
# source <somefile>
# . <somefile>
source <somefile>
. <somefile>
我不清楚你試圖達到/搜索什麼。也許如果你詳細說明你究竟想要做什麼以及AND應該做什麼,我們可以提供更多幫助。
該解決方案從Vim命令執行:
grep PATTERN /some/path/*
如果您正在尋找目錄中的文件可以使用:
ls /some/path | grep PATTERN
您可以更新命令的相關作品。
反正...
從你的腳本中,我假設你有一個行指定給您要到grep的東西的目錄,例如路徑你要搜索的PATTERN路徑,定位光標與路徑線,那麼你要提取的路徑和grep它與你的命令的模式,例如行文件:
source /some/path
這個命令應該做的你期望:
:command! -nargs=1 GrepSource :exe printf("!grep '<args>' '%s'/*", substitute(
getline('.'), "\\%(source\\s*\\)\\(.*\\)$", "\\1",""))
隨着光標與路徑開頭的行字源,你可以執行上面的命令:
:GrepSource PATTERN
這將在「/所以搜索文件我/路徑/'字PATTERN。
我想在你的文件路徑不斜槓「/」結束,我想,你希望在文件中搜索,所以我追加「/ *」在路徑的末尾進行搜索,以命令結束:
grep PATTER /some/path/*
我用substitute
命令替換
source /some/path
與
/some/path
然後在printf
中使用它來創建實際的命令。
我無法讓你的命令工作。請說,如果你的命令在你的機器上工作。 ---我使用Vim 7.2,OS X Leopard。 – 2009-07-13 00:25:32
我也在OS X 10.5上使用7.2。你使用第二個命令(GrepSourceTest)得到了什麼輸出?確保您的光標處於某個行上,如「來源」或「。 '或'#。 ' –
2009-07-13 00:45:15