在vim中执行非正则expression式search/replace

当在vim中进行search/replace时,我几乎不需要使用正则expression式,所以不断地逃避一切都是一个痛苦,有没有办法使它默认不使用正则expression式或有一个替代的命令来完成这个?

作为一个例子,如果我想用< ,我想只能inputs/</&lt;/g而不是s/\</\&lt\;/g

这个问题主要是由于replacestring中的&的作用造成的。 replacestring不是 reg-ex,虽然它有一些特殊字符,如& 。 你可以在这里阅读关于&replacestring的作用:h sub-replace-special

我怀疑OP的主要问题不一定是input多余的反斜杠,而是记住什么时候需要反斜杠,什么时候不需要反斜杠。 一种解决方法可能是在不确定时开始使用“replaceexpression式”。 (请参阅:h sub-replace-expression 。)这需要在replacestring中放置一个“\ =”,但对于某些人来说,它可能会让您更自然地控制replace内容,因为将string文字放在单引号中会使您replace你想要的string。 例如,这个替代品就是OP想要的:

 :s/</\='&lt;'/g 

对于:s命令有一个禁用或强制魔法的快捷方式。 要closures魔法使用%sno就像:

 :%sno/search_string/replace_string/g 

在这里find: http : //vim.wikia.com/wiki/Simplifying_regular_expressions_using_magic_and_no-magic

使用这个选项:

 set nomagic 

:help /magic

如果你想从字面上search,你可以使用\V正则expression式primefaces。 这几乎做你想要的,除了你也需要逃避反斜杠。 你可以定义你自己的search命令,这将从字面上进行search。 像这样的东西:

  :com! -nargs=1 Search :let @/='\V'.escape(<q-args>, '\/')| normal! n 

然后使用:Search / foobar / baz

对于替代品,你可以在一个:search命令之后使用

 :%s//replace/g 

从那以后,Vim会隐式地提取最后的search项并使用replace。

(只是想给你一些想法)

你有魔法吗?

 :set magic 

尝试编辑查找并replace菜单栏上。