在 Vim 中搜索后居中光标位置

use*_*414 6 vim

我希望 Vim 在搜索后将光标垂直放置在屏幕中间。我已经通过我的以下行实现了 for *#n命令:Nvimrc

nmap * *zz
nmap # #zz
nmap n nzz
nmap N Nzz
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何映射/?同样的方式?换句话说,我想在使用以下命令找到某些文本后以相同的方式定位光标:

/some-text-to-find-forward
?some-text-to-find-backward
Run Code Online (Sandbox Code Playgroud)

Ran*_*ris 4

编辑:扔掉我最初的答案,因为它太杂乱了。这是一个更好的解决方案。

function! CenterSearch()
  let cmdtype = getcmdtype()
  if cmdtype == '/' || cmdtype == '?'
    return "\<enter>zz"
  endif
  return "\<enter>"
endfunction

cnoremap <silent> <expr> <enter> CenterSearch()
Run Code Online (Sandbox Code Playgroud)

其工作方式是Enter在命令行模式下重新映射到自定义表达式。

zz如果命令行当前正在搜索中,该函数将执行当前搜索。否则它只会执行正在执行的任何命令。