2014-05-16 9 views
5

Ich möchte in der Lage sein, das Wort unter dem Cursor hervorzuheben, ohne zum nächsten Ergebnis zu gehen.Vim markieren Sie ein Wort mit * ohne den Cursor zu bewegen

Die Lösung, die ich verwendet einen Marker gefunden:

noremap * mP*N`P 

Gibt es eine bessere Lösung?

Ich bemerkte, vim ist nicht wirklich gut, um die Position des Cursors nach der Ausführung von Befehlen zu behalten. Wenn ich beispielsweise den Puffer umschalte, springt der Cursor zurück zum Anfang der Zeile.

Ich könnte interessant sein, eine globale Einstellung dafür zu haben.

+0

Diese Wiki-Seite hat einen Abschnitt dazu: http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches –

Antwort

9

Es gibt leider keine globale Einstellung dafür.

Eine übliche Lösung für das "highlight bewegungslos" Problem ist:

nnoremap * *`` 

Eine Lösung für das "halten die Position Cursor beim Puffern Schalt" -Problem ist:

augroup CursorPosition 
    autocmd! 
    autocmd BufLeave * let b:winview = winsaveview() 
    autocmd BufEnter * if(exists('b:winview')) | call winrestview(b:winview) | endif 
augroup END 
4

Als detaillierte here können Sie eine Karte wie folgt definieren:

:nnoremap <F8> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>

2

Mein SearchHighlighting plugin ändert den Befehl *, so dass es nicht zum nächsten Spiel springt; Sie können immer noch springen, indem Sie eine [count] liefern. Es erweitert diesen Befehl auch auf den visuellen Modus (ein weiteres häufig angefordertes Feature, das nicht in Vim enthalten ist) und einige mehr.

+0

Kein Bundle/Vundle Github-Repository für Ihr Plugin? – nowox

+0

https://github.com/vim-scripts/SearchHighlighting –