2010-11-05 11 views
13

En pocas palabras, ¿cómo puedo desactivar por completo el modo Reemplazar en vim? Nunca uso el modo Reemplazar, pero a veces termino accidentalmente cuando vuelvo a ingresar al modo Insertar. Naturalmente, me equivoco escribiendo algunos caracteres antes de darme cuenta de que estoy en modo de reemplazo. Entonces, ¿hay alguna forma de deshabilitar por completo el modo Reemplazar, ya sea a través de la configuración o sin embargo?¿Es posible desactivar el modo Reemplazar en vim?

+0

Por lo que vale la pena, busqué en Google y se sometió a algunas otras preguntas sobre SO, y no pudimos encontrar pidió este o Respondí, quizás soy el único que no usa el modo de reemplazo y quiere deshacerse de él, o tal vez mi google-fu era demasiado débil. – coderintherye

+1

¿Cómo reemplazarías un solo personaje? esto es muy útil :) –

+1

@Nicolas Viennot Puedes reemplazar un solo caracter con 'r', este comando no está relacionado con el modo de reemplazo. – ZyX

Respuesta

14

no se puede deshabilitar reemplazar el modo, pero se puede hacer autocommands que cambiarán Reemplazar y Reemplazar virtual modos atrás a modo de inserción:

function s:ForbidReplace() 
    if v:insertmode isnot# 'i' 
     call feedkeys("\<Insert>", "n") 
    endif 
endfunction 
augroup ForbidReplaceMode 
    autocmd! 
    autocmd InsertEnter * call s:ForbidReplace() 
    autocmd InsertChange * call s:ForbidReplace() 
augroup END 
+0

Gracias. Voy a intentar esto mañana en el trabajo y ver cómo va. – coderintherye

+0

Eso funcionó muy bien, gracias!Solo una nota extra para otros usuarios, lo anterior generalmente iría en su archivo .vimrc, al menos ahí es donde lo puse para el mío. – coderintherye

+0

¿Cómo es esto mejor que 'imap '? Parece tener el mismo efecto – istepaniuk

3

No estoy seguro si esta es la mejor manera, pero se puede mapear R y R para nada en su .vimrc:

map R <C-V><C-V> 
map r <C-V><C-V> 

Editar: o esto:

map R <Nop> 
map r <Nop> 
+4

Deberías leer ': ayuda '. –

+1

¡Eso se siente mejor, gracias! Editaré mi respuesta –

+1

Esto no hace nada cuando el modo de inserción se cambia por '' o cuando ingresa el modo de reemplazar con 'gR' (virtual replace). – ZyX

-1

uso I clave para entrar en Insertar en lugar de utilizar el Insertar clave

De esta forma usted no re-entrar en el modo Insertar

3

Sólo añadir en su .vimrc imap <Insert> <Nop>

Eso será suficiente

2

Encontré esta solución mejor. La tecla Insertar para ingresar al modo de inserción funciona, pero el modo de reemplazo en la segunda inserción está desactivado. Coloque las dos líneas siguientes en su .vimrc

imap <Insert> <Nop> 
inoremap <S-Insert> <Insert> 

(mencionado por garyjohn sitio de superusuario @)

Cuestiones relacionadas