2016-04-20 196 views
5

我們可以用csh或vim編寫函數/子程序嗎?在vim中自動刪除反斜槓

基本上,我的問題是如何在vim中自動搜索的字符串中自動縮減反斜槓。

比方說:

文件FILE_A的內容是:

abcd 
a/b/c/d 

現在,如果我搜索 'ABCD' 內,在命令模式 「/ ABCD」 VIM,它會匹配ABCD(第一行)。 如果我搜索'a/b/c/d',它將不匹配整個'a/b/c/d'。它只會匹配'a/b/c/d'中的'a'。

要匹配整個'a/b/c/d',我需要搜索a\/b\/c\/d。每次你想搜索其中有反斜槓的字符串時,反斜槓都是一種痛苦。 :)

有沒有人解決過這個問題?

回答

5

在Vim中:

可以向後搜索,其中,隔板爲?,而不是/,所以/並不需要進行轉義:?a/b/c/d;要向下移動到下一場比賽,請使用N

或者您可以使用:let @/="a/b/c/d"(這不會移動光標)設置搜索模式,然後使用n進行下一個匹配。

您也可以定義自己的命令:

function! FindSlashed(arg) 
    let @/=a:arg 
    norm n 
endfunction 
command! -nargs=1 S call FindSlashed(<q-args>) 

您可以使用這樣的:

:S a/b/c/d 

編輯:let,不set

+0

感謝您的答覆替代a/b/c/d。 我知道落後的搜索。這是一個調整,而不是解決方案。我會試試你的第二種方法。 –

+3

當然這是一個調整。使用搜索的預期方式是避開斜槓。 – Amadan

+1

第二個選項: 我試着設置這個':set @/=「a/b/c/d」'但是沒有成功。錯誤出現:'E518:未知選項:@/='。我錯過了什麼嗎? –

1

這不是關於搜索,而是關於替換。我以爲你可能會發現這有助於您編寫函數

您可以使用alternate delimiters來替換命令。即,而不是使用/,你可以使用像#

:s#a/b/c/d#this text will replace# 

上面的命令將與this text will replace

+0

問題是關於搜索沒有取代。 –

+0

是的,我明白。我認爲這對未來閱讀這篇文章的其他人可能有用。讓我看看在搜索中是否也有類似的東西 –