Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何更改搜索的输出消息?_Regex_Search_Vim_Output - Fatal编程技术网

Regex 如何更改搜索的输出消息?

Regex 如何更改搜索的输出消息?,regex,search,vim,output,Regex,Search,Vim,Output,我想在搜索完成后更改输出消息 p、 e.当我使用很长的正则表达式进行搜索时,没有找到任何内容,vim返回消息E486:Pattern not found:。。。。非常长的正则表达式代码 我想捕获输出并更改此消息。 我怎样才能做到这一点?我想您是在谈论捕获vimscript中的错误消息 然后,您可能需要签出catch::h catch 在try block中执行搜索,然后您可以捕获错误消息,并执行任何您想要的操作。我认为您正在谈论在vimscript中捕获错误消息 然后,您可能需要签出catch:

我想在搜索完成后更改输出消息

p、 e.当我使用很长的正则表达式进行搜索时,没有找到任何内容,vim返回消息E486:Pattern not found:。。。。非常长的正则表达式代码

我想捕获输出并更改此消息。
我怎样才能做到这一点?

我想您是在谈论捕获vimscript中的错误消息

然后,您可能需要签出catch::h catch


在try block中执行搜索,然后您可以捕获错误消息,并执行任何您想要的操作。

我认为您正在谈论在vimscript中捕获错误消息

然后,您可能需要签出catch::h catch

在try block中执行搜索,然后您可以捕获错误消息,并执行任何您想要的操作。

s[substitute]命令具有用于抑制错误的/e标志,但是,AFAIK,甚至:silent/foo也不会抑制该错误消息。好吧,你不想压制它,不管怎样,你想捕捉它并展示其他东西

与每种语言一样,vimscript都有自己的try/catch。您可以在以下内容中阅读:h:尝试在页面的下一步阅读

try
  /foo
catch /^Vim\%((\a\+)\)\=:E486/
  let @n = v:exception
  echo "No luck!"
endtry
您可以将try/catch封装在一个您不映射到的函数中:/s[substitute]命令具有用于抑制错误的/e标志,但是,即使是:silent/foo也不会抑制该错误消息。好吧,你不想压制它,不管怎样,你想捕捉它并展示其他东西

与每种语言一样,vimscript都有自己的try/catch。您可以在以下内容中阅读:h:尝试在页面的下一步阅读

try
  /foo
catch /^Vim\%((\a\+)\)\=:E486/
  let @n = v:exception
  echo "No luck!"
endtry

您可以将try/catch封装在一个您不需要映射到的函数中/

谢谢Romaill,您知道如何将catch的内容放入剪贴板或寄存器吗?它到目前为止还没有捕获任何内容,但我会找到它。它是否也适用于let@/=“foo”?上面的代码在这里起作用。我在寄存器n中找到了Vimappend:E486:找不到模式:foo,没有运气!在命令行上回响。您计划如何使用let@/=“foo”?let@/=“foo”不执行任何搜索:它用foo替换搜索寄存器的内容。它的唯一效果是,下次尝试重新使用最新的搜索模式而不是实际使用的搜索模式时,您会得到foo。let@{register}='foo'用于更改{register}的值是搜索注册表,它包含您的最新搜索模式。让@/=“foo”将以前的搜索模式替换为foo。假设您以前的模式是bar,点击n将跳转到下一个foo,而不是下一个bar。上一个搜索模式的另一个很好的用途是,在进行替换之前使用/构建您的模式,然后执行:%s//bar以重用该模式。谢谢您,Romaill,您知道如何将catch的内容放入剪贴板或注册表吗?它直到现在还没有捕获任何内容,但我会找到它。它是否也适用于let@/=“foo”?上面的代码在这里起作用。我在寄存器n中找到了Vimappend:E486:找不到模式:foo,没有运气!在命令行上回响。您计划如何使用let@/=“foo”?let@/=“foo”不执行任何搜索:它用foo替换搜索寄存器的内容。它的唯一效果是,下次尝试重新使用最新的搜索模式而不是实际使用的搜索模式时,您会得到foo。let@{register}='foo'用于更改{register}的值是搜索注册表,它包含您的最新搜索模式。让@/=“foo”将以前的搜索模式替换为foo。假设您以前的模式是bar,点击n将跳转到下一个foo,而不是下一个bar。上一个搜索模式的另一个很好的用途是使用/在进行替换之前构建您的模式,然后执行:%s//bar以重用该模式。如果您否决我的问题,请写下您的姓名,并告诉我为什么否决该问题。如果你否决我的问题,请写下你的名字,并告诉我你为什么否决它。tnx。