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

时间:2016-10-06 09:35:28

标签: vim

我希望Vim在搜索后将光标放在屏幕中间。我已在{。1},*#n命令中实现了.vimrc中的以下行

N

我的问题是:如何以同样的方式映射nmap * *zz nmap # #zz nmap n nzz nmap N Nzz /?即我想在使用

找到一些文本后定位光标
?

3 个答案:

答案 0 :(得分:3)

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

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

cnoremap <silent> <expr> <enter> CenterSearch()

这种方法的工作方式是在命令行模式下将 Enter 重新映射到自定义表达式。

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

答案 1 :(得分:1)

它不是很漂亮,但是

:nnoremap / :execute "normal! /\<lt>cr>zz"<c-left><right>

将完成工作。 (在命令行上放置:execute "normal! /"命令,然后在其末尾添加<cr>zz,以便在发出命令时自动zz。最后<c-left><right>步骤进入正确位置的搜索模式

答案 2 :(得分:0)

来自 Randy Morris 的解决方案,但作为单线:

cnoremap <silent><expr> <enter> index(['/', '?'], getcmdtype()) >= 0 ? '<enter>zz' : '<enter>'