我希望Vim在搜索后将光标放在屏幕中间。我已在{。1},*
,#
和n
命令中实现了.vimrc中的以下行
N
我的问题是:如何以同样的方式映射nmap * *zz
nmap # #zz
nmap n nzz
nmap N Nzz
和/
?即我想在使用
?
答案 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>'