1

我已将寻呼机从 切换less到 ,vimpager因为 vim 响应鼠标滚轮。

n但是最近在通过编译更新版本的 vim 7.3 并添加了一系列很棒的插件来更新我的 vim 设置后,当我尝试使用and搜索联机帮助页中的文本时,vimpager 不再做任何合乎逻辑的事情N

这真的很糟糕,所以我开始使用:verbose map.

从 vimpager 脚本(/usr/local/share/vim/vim73/macros/less.vim):

" Search
noremap <script> / H$:call <SID>Forward()<CR>/
if &wrap
  noremap <script> ? H0:call <SID>Backward()<CR>?
else
  noremap <script> ? Hg0:call <SID>Backward()<CR>?
endif

fun! s:Forward()
  " Searching forward
  noremap <script> n H$nzt<SID>L
  if &wrap
    noremap <script> N H0Nzt<SID>L
  else
    noremap <script> N Hg0Nzt<SID>L
  endif
  cnoremap <silent> <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
endfun

fun! s:Backward()
  " Searching backward
  if &wrap
    noremap <script> n H0nzt<SID>L
  else
    noremap <script> n Hg0nzt<SID>L
  endif
  noremap <script> N H$Nzt<SID>L
  cnoremap <silent> <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
endfun

call s:Forward()

" Quitting
noremap q :q<CR>

我得到的最后一个,它很有意义。但这H$nzt<SID>L是完全不可理解的。

它到底在做什么?

PS我已经通过将这两个函数转换为空的无操作函数来恢复我的s:Forward()搜索s:Backward()。所以我已经准备好了,但是这些东西有什么作用呢?

4

1 回答 1

0

您可以在 中使用滚轮less

总之……</p>

H      "puts the cursor on the first printable character 
       "of the first visible line of the window.
$      "moves the cursor to the end of that line
n      "moves the cursor on the next match
zt     "scrolls the current line at the top of the window
<SID>L "executes the L mapping defined in the current script

整个事情看起来有点复杂,试图让 Vim 的工作nless.n

于 2013-05-16T04:50:12.933 回答