@Remonn ya lo dije en los comentarios, pero no estaba muy claro para mí. Así es como me las arreglé para ver los resultados:
function! F()
normal! gv
throw mode()
endfunction
vnoremap <F9> <ESC>:call F()<CR>
entro en diferentes modos visuales y luego pulsa para ver F9
.
Necesito un lanzamiento porque la línea -- VISUAL --
cubre cualquier mensaje de eco. ¿Alguien puede hacer eco en el modo VISUAL?
En general, creo que lo mejor que puede hacer cuando se necesitaría mode()
es hacer dos aplicaciones diferentes, y luego o bien dos funciones diferentes que hacen cosas completamente diferentes:
function! Fnorm()
endfunction
function! Fvis()
endfunction
nnoremap <F9> :call Fnorm()<CR>
nnoremap <F9> <ESC>:call Fvis()<CR>gv
o una sola función y dar diferentes parámetros a ella en función de la asignación:
function! F(param)
endfunction
nnoremap <F9> :call F(1)<CR>
nnoremap <F9> <ESC>:call F(2)<CR>gv
Otro truco relacionado es qué hacer si quieres hacer algo mientras está en modo visual, como mover el cursor. Lo mejor que puedo hacer es:
function! Fvis()
normal! gv
cursor(1, 1)
endfunction
nnoremap <F9> <ESC>:call Fvis()<CR>gv
¿Qué desea hacer si el modo de bloque visual está activo? –
'@Pavan, si el modo de bloque visual está activo, quiero calcular el inicio y el final del bloque (línea + columnas). Si el modo visual está activo, quiero calcular solo la línea de inicio y final de la selección visual, pero no las columnas. – Reman
Comprobar ': help visualmode()'. – Raimondi