2016-04-20 197 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

是的,我明白。我认为这对未来阅读这篇文章的其他人可能有用。让我看看在搜索中是否也有类似的东西 –