在vim中执行非正则expression式search/replace
当在vim中进行search/replace时,我几乎不需要使用正则expression式,所以不断地逃避一切都是一个痛苦,有没有办法使它默认不使用正则expression式或有一个替代的命令来完成这个?
作为一个例子,如果我想用<
,我想只能inputs/</</g
而不是s/\</\<\;/g
这个问题主要是由于replacestring中的&
的作用造成的。 replacestring不是 reg-ex,虽然它有一些特殊字符,如&
。 你可以在这里阅读关于&
replacestring的作用:h sub-replace-special
。
我怀疑OP的主要问题不一定是input多余的反斜杠,而是记住什么时候需要反斜杠,什么时候不需要反斜杠。 一种解决方法可能是在不确定时开始使用“replaceexpression式”。 (请参阅:h sub-replace-expression
。)这需要在replacestring中放置一个“\ =”,但对于某些人来说,它可能会让您更自然地控制replace内容,因为将string文字放在单引号中会使您replace你想要的string。 例如,这个替代品就是OP想要的:
:s/</\='<'/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菜单栏上。