2012-05-30 11 views
7

Estoy escribiendo un complemento para comentar el código de manera especial y debería actuar un poco diferente cuando se lo llama en modo visual o normal.Vim: cómo obtener el modo Actualmente estoy en

¿Existe alguna función o alguna forma de determinar el modo en que se encuentra el usuario (era) cuando se llamó a la función?

Respuesta

6

Hay

modo

([expr]) Devuelve una cadena que indica el modo actual.

http://vimdoc.sourceforge.net/htmldoc/eval.html#mode%28%29

pero que podría no funcionar ya que probablemente va a iniciar el modo de comando en los RHS de la asignación.

Una forma más robusta sería configurar ligeramente diferentes asignaciones como

nmap <Leader>c :call MyFunc('n')<CR> 
vmap <Leader>c :call MyFunc('v')<CR> 

y utilizar el valor del argumento saber qué modo el usuario se encontraba.

+4

Se debe utilizar 'nnoremap' /' vnoremap 'aquí, son más estables (es decir, hay muchas menos formas en que el usuario final puede romper accidentalmente el mapeo) y, por lo tanto, son la única opción para un complemento. – ZyX

Cuestiones relacionadas