自动斜线 vim 中的反斜杠

Automatically slash the backslashes in vim

我们可以在 csh 或 vim 中写 functions/subroutines 吗?

基本上,我的问题是如何在 vim.

中用于搜索的字符串中自动斜线反斜杠

假设:

文件 file_a 的内容是:

abcd
a/b/c/d

现在,如果我在命令模式下使用“/abcd”在 vim 中搜索 'abcd',它将匹配 abcd(第一行)。 如果我搜索 'a/b/c/d',它不会匹配整个 'a/b/c/d'。它只会匹配 'a/b/c/d'.

中的 'a'

要匹配整个 'a/b/c/d',我需要搜索 a\/b\/c\/d。每当您想搜索其中包含反斜杠的字符串时,削减反斜杠是一件很痛苦的事情。 :)

你们中有人早些时候解决过这个问题吗?

在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

这不是关于搜索而是关于替换。我认为您在编写函数时可能会发现这很有用

您可以使用 alternate delimiters 进行替换命令。即,您可以使用 #

而不是使用 /
:s#a/b/c/d#this text will replace#

以上命令会将a/b/c/d替换为this text will replace