2013-05-16 3 views
1

Я переключил свой пейджер с less на vimpager, потому что vim отвечает на колесо мыши. неVimpager script: Очень таинственный

Однако в последнее время после обновления моих настроек Vim пути компиляции новой версии Vim 7.3, и добавив ряд удивительных плагин, vimpager больше не делает ничего логического при попытке поиска текста в страницах руководства с использованием n и 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 полностью непроницаем.

Что, черт возьми, он делает?

P.S. Я вернул свой поиск, превратив эти две функции s:Forward() и s:Backward() в пустые функции no-op. Так что я все настроен, но что это делает?

ответ

0

Вы можете использовать колесо прокрутки в less.

Во всяком случае ...

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 в n работу как less «s n.

+0

В каком терминале меньше реагировать на колесо прокрутки? Это только для меня на Terminal.app с плагином MouseTerm SIMBL. Я больше не использую Terminal.app, потому что iTerm2 имеет keymapping и другие функции, которые мне нравятся (например, курсивная поддержка в последних сборках) –

+0

Я не понимаю, что такое «H $ n'. Но спасибо за это. –

+0

Честно говоря, я тоже не понимаю «почему»: это выглядит как обходной путь для меня. Также я использую терминал Gnome дома и iTerm на работе. Я знаю, что scrollwheel работает меньше в терминале Gnome, потому что я просто его пробовал, но почти никогда не использую мышь при работе с CLI, поэтому я не уверен, работает ли она в iTerm. – romainl

Смежные вопросы