2012-06-12 83 views
7

Actualmente, estoy tratando de aprender VIM y deshabilité las teclas de flecha para todos los modos. Al escribir nuevas funciones siempre solía abrir y cerrar el paréntesis al mismo tiempo para no olvidarlos. Como no puedo regresar (sin las teclas de flecha) me preguntaba cómo se hace en VIM porque una vez cerrado, estás fuera del paréntesis.Cómo saltar en paréntesis en VIM

¿Es una práctica estándar salir del modo INSERT, pasar al paréntesis e ingresar al modo INSERT nuevamente? ¿O simplemente dejas el paréntesis abierto hasta que termines?

Sé sobre el script AutoClose. La pregunta sirve más para comprender la forma de hacer las cosas de VIM, por lo que me gustaría saber cómo otros desarrolladores están superando este problema.

+2

¿Estás hablando de ''% o 'f)'? –

+0

No, en realidad me refiero a cómo volver al corchete una vez que está cerrado(); // cursor está aquí ahora. En otros editores solo usas las teclas de flecha, pero deshabilité el mío para acostumbrarme a los modos de VIM. – ddillert

+1

Después de un par de días más de usar vim, ni siquiera notará los modos de entrada y salida. El objetivo de vim es hacer que todo lo que hagas para manipular texto sea una segunda naturaleza. No tomará mucho tiempo, joven jedi. – jahroy

Respuesta

5

Olvidar un paréntesis de cierre causará problemas de resaltado más adelante, por lo que es poco probable que los pase por alto más.

Sugiero adquirir el hábito de escribir los argumentos en el medio del paréntesis mientras está escribiendo y cerrar los parens una vez que haya terminado con los argumentos. (Si está tratando de aprender vim, de todos modos, este cambio no parece demasiado grande para adaptarse, la cantidad de otras cosas a las que tendrá que adaptarse ya es bastante sorprendente.)

2

La idea detrás La naturaleza modal de Vim es que pasas la mayor parte del tiempo en modo normal, no en modo insertar. Solo ingresa el modo de inserción cuando desea insertar texto, y cuando quiera hacer algo que no esté insertando texto sin formato, vuelve al modo normal.

En cualquier caso, si por alguna razón no desea abandonar el modo de inserción, puede presionar CTRL+o para ejecutar un único comando de modo normal. Pero recomiendo que te acostumbres a saltar de un modo a otro: cambiar de modo debería ser una segunda naturaleza para los usuarios de Vim.

2

Pregunta: ¿Es una práctica estándar salir del modo INSERT, pasar al paréntesis y volver a ingresar al modo INSERTAR? ¿O simplemente dejas el paréntesis abierto hasta que termines?

Respuesta: Sería más habitual simplemente escribir los argumentos de la función y luego escribir el paréntesis de cierre. Pero sí, si ya tecleaste ) y luego decidiste que querías volver con un personaje, probablemente solo presionarás la tecla Escape, luego presionas i para insertarla antes de la posición actual. Eso es solo dos teclas, y los usuarios experimentados de vi están bastante acostumbrados a presionar la tecla Escape.

Si realmente escribió );, debe presionar la tecla Escape, luego h y i. Si haces eso mucho, te acostumbrarás.

Algunas combinaciones de teclas se convierten en algo natural. Por ejemplo, puede transponer dos caracteres en vi pulsando x, para eliminar el carácter debajo del cursor y hacer que el cursor esté en el siguiente carácter; luego p, para pegar ese carácter después de la posición del cursor. He escrito xp suficientes veces en mi vida que ni siquiera lo pienso ... mis dedos solo saben dónde están esas llaves. Solo pienso "Oh, necesito intercambiar esos personajes" y mis dedos cierran el xp.

+0

De acuerdo ... El OP ni siquiera pensará en ninguna de estas cosas después de unos días más usando vim. El objetivo de vi es que todo lo que haces para manipular el texto se convierte en una segunda naturaleza. – jahroy

1

Antes que nada, en el modo de comando % se mueve al paréntesis, corsé o corchete correspondiente.

Para responder a su pregunta: sí, las personas que cierran inmediatamente sus pares, llaves, corchetes, etc ...lo más probable es que salga del modo comando y luego vuelva a ingresar el modo insertar para volver a editar.

Para mí, esto ni siquiera es algo que noto. Será lo mismo para ti muy pronto.

Cada vez que comienzo una nueva instrucción if, inmediatamente abro y cierro las llaves. Después agrego la llave de cierre, me golpeó ESCO para abrir la línea por encima de mi llave de cierre (o ESCki). Luego empiezo a escribir de nuevo.

Esto nunca me parecerá un inconveniente o un problema. Todo esto va a ser una segunda naturaleza para que muy pronto ...

también que ni siquiera pensar en esas teclas de flecha mucho más ... Usted sólo tiene que utilizar h volver (o algo mejor) .

0

Usted no necesita dejar de usar las teclas de flecha en absoluto. Esa es una idea tonta.

hjkl es "mejor" que las teclas de flecha solo si toca tipo, porque está en la fila de inicio. Si no tocas el tipo, tus manos ya están haciendo muchos movimientos de forma natural y llegar a las teclas de flecha va con el resto. Si no tocas el tipo, no hay una fila de inicio.

Su problema no es realmente un problema de hjkl vs flechas, sin embargo. Puede resolverlo adquiriendo el hábito de escribir solo el paréntesis de apertura, luego los argumentos, luego el paréntesis de cierre o usando un mecanismo de "cierre automático".

Se podía hacerlo de la manera ingenua añadiendo esta línea a su ~/.vimrc:

inoremap (()<C-o>h 

o utilizar uno de the many plugins available.

+0

jaja, lo he intentado renunciar a las teclas de flecha, porque esa es la recomendación general para los usuarios de vim, 'hjkl' se supone que es más rápido, bla, bla, bla. La mitad del tiempo, me encontré golpeando 'j' cuando realmente quería' h', viceversa. Las teclas de flecha no eran tan malas después de todo lol. – verboze

+0

Aquellos que insisten en zanjas en las flechas para 'hjkl' son o novatos que se repiten cosas que no entienden con el fin de encajar, o mecanógrafos que se olvidan de que son un muy, muy minoritario. – romainl

0

Una opción es usar un mapa de teclas para saltar al paréntesis de apertura/paréntesis. Tiendo a cerrar corchetes/paréntesis de inmediato para asegurarme de que estén equilibrados (a pesar de que vim me dirá con enojo que los he echado de menos en caso de que eso ocurra, por la fuerza del hábito). Lanzar este mapeo en su vimrc:

imap <C-S-h> <esc> :call search("[{[(]", "bes")<CR> i

Aquí está el desglose de comandos:

  • mapa <CTRL-SHIFT-h> en modo de edición a
  • <ESC> (para volver al modo normal),
  • :call search("[({[]", "bes")<CR> buscar hacia atrás un corchete/paréntesis abierto y saltar a él, y finalmente
  • i volver al modo de inserción

Así que puedo escribir foo();, entonces <CTRL-SHIFT-h> a saltar de nuevo en el paréntesis para proporcionar argumentos.

Poco relacionado: mirando hacia el vim-surround plugin, es un refuerzo de la productividad una vez que se obtiene una caída de ella!

Cuestiones relacionadas