为什么vim在函数中的行为不同?
我试图让下面的内容在函数中工作为什么vim在函数中的行为不同?,vim,vim-plugin,Vim,Vim Plugin,我试图让下面的内容在函数中工作 let pat = 'set' :execute "normal /" . pat . "\<CR>" let pat='set' :执行“正常/”。拍打"\" 但是,当我这样运行它时(字面上是将粘贴复制到vim中) :函数!B研究(pat) 执行“正常/”。a:帕特。"\" 端功能 :调用b搜索('tag') 它搜索标记,但不进行任何突出显示。“设置”仍然突出显示,如果我按n,它将转到“设置”,而不是“标记” 我束手无策——似乎函数execut
let pat = 'set'
:execute "normal /" . pat . "\<CR>"
let pat='set'
:执行“正常/”。拍打"\"
但是,当我这样运行它时(字面上是将粘贴复制到vim中)
:函数!B研究(pat)
执行“正常/”。a:帕特。"\"
端功能
:调用b搜索('tag')
它搜索标记,但不进行任何突出显示。“设置”仍然突出显示,如果我按n
,它将转到“设置”,而不是“标记”
我束手无策——似乎函数execute内部的行为有所不同
如果您知道解决方法,请提供帮助
很好的解决办法
我能够写出我的全部命令,并让它按照我的预期工作
命令-nargs=1 Ack2执行“Ack”执行“/”
扩展名ack.vim
没有突出显示我搜索的术语。由于我已经将搜索配置为使用perl正则表达式(而ag
使用perl正则表达式,这是我作为搜索者使用的),现在不仅突出显示了这些术语,我还可以使用n
像任何普通搜索一样逐步浏览它们(显然,现在整个项目中都有)
非常感谢 执行
/
搜索不需要normal
。对于您的情况,这应该足够了:
function! BSearch(pat)
execute "/" . a:pat
endfunction
看看这个:
:h function-search-undo
以下是整段:
The last used search pattern and the redo command "."
will not be changed by the function. This also
implies that the effect of |:nohlsearch| is undone
when the function returns.
也许您可以将搜索移动到用户命令中,例如:
command! -nargs=1 BSearch execute "/".<q-args>
命令-nargs=1 b搜索执行“/”。
嗯,这很有趣。不幸的是,它在命令模式和函数中的行为仍然不同:((其行为与以前相同)更新的示例包含了完整的函数,在这里可以使用。这对我来说也不适用。两个版本之间的区别是,如果没有normal
,列将很好地移动到匹配项,而使用它,列只移动到匹配行的开头。但它们都不会更改突出显示。这非常有效!我将发布我现在使用的是完全光荣的命令。
command! -nargs=1 BSearch execute "/".<q-args>