2013-01-16 1 views
1

J'ai un certain nombre de ceux-ci dans mon .vimrc:Comment empêcher mon curseur de se déplacer dans vim lors de l'exécution d'un: noremap?

:noremap <F1> :set hls!<CR> :echo "hilight seach (hls) =" &hls<CR> 

(Il est agréable d'avoir des choses comme autoindent, la numérotation des lignes, ignorecase, etc., basculée à la pression d'un bouton.)

Mais il y a un comportement étrange quand ces actions sont exécutées. Le curseur se déplace vers la droite d'une colonne. Si je suis à la fin d'une ligne, le curseur se déplace au début de la ligne suivante. Pourquoi fait-il cela et comment l'empêcher?

Ceci est vim 7.3.429, mais je le vois aussi dans 7.2.411.

Merci

+0

On peut également utiliser ': nnoremap : set hls! hls? '. –

Répondre

4

Le problème est l'espace entre le <CR> et le :echo. Retirez-le et cela devrait fonctionner.

:noremap <F1> :set hls!<CR>:echo "hilight seach (hls) =" &hls<CR> 
+0

Agh! Je pensais avoir essayé toutes les permutations d'espaces inutiles. – Sniggerfardimungus

1

gpojd est correct l'espace cause vos problèmes de mouvement. Peut-être que vous pourriez être intéressé par une cartographie à bascule plus simple?

nnoremap <f1> :set hls! hls?<cr> 
nnoremap <f2> :set spell! spell?<cr> 
nnoremap <f3> :set list! list?<cr> 

L'utilisation set hls? affiche la valeur actuelle de 'hlsearch'. Parce que :set peut définir plusieurs paramètres à la fois, vous basculez la valeur, puis demander la valeur actuelle à afficher.

Questions connexes