我们可以在csh或vim中编写函数/子程序吗?
基本上,我的问题是如何自动削减字符串中的反斜杠,我们在vim中搜索它。
让我们说:
文件file_a的内容是:
abcd
a/b/c/d
现在,如果我搜索' abcd'在vim里面用" / abcd"在命令模式下,它将匹配abcd(第一行)。 如果我搜索' a / b / c / d',它将不会匹配整个' a / b / c / d'。它只匹配' a'来自' a / b / c / d'。
要匹配整个' a / b / c / d',我需要搜索a\/b\/c\/d
。每次要搜索其中包含反斜杠的字符串时,削减反斜杠是一种痛苦。 :)
你们其中有人早些时候解决了这个问题吗?
答案 0 :(得分: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
。
答案 1 :(得分:1)
这不是关于搜索,而是关于替换。我认为你可能会发现这很有用,因为你正在编写函数
您可以使用alternate delimiters替换命令。也就是说,您可以使用/
#
:s#a/b/c/d#this text will replace#
上述命令会将a/b/c/d
替换为this text will replace