2010-05-27 18 views
7

Antecedentes:Vim paso a paso: ¿Cómo se alinea el texto arbitrario mediante delimitador arbitrario?

Hay un montón de grandes tutoriales y "trucos" páginas para Vim, pero una cosa que es muy difícil es encontrar instrucciones específicas sobre cómo hacer algo arbitrario que uno puede fácilmente hacer en el propio editor de texto familiar IDE. Por lo tanto, estoy pidiendo instrucciones paso a paso sobre cómo haría algo en Vim que ya sé cómo hacer en otros editores de texto. Me gusta Vim y la gran ayuda incorporada y numerosos tutoriales en línea, pero a veces un humano tiene que descomponerse y preguntarle a otro ser humano.

Pregunta:

Supongamos que tengo el siguiente código en mi archivo, ¿cómo puedo usar Vim para llegar desde antes, para después?

 
    BEFORE: 
    Lorem ipsum dolor | sit amet, consectetur | adipisicing elit, 
    sed do eiusmod | tempor incididunt | ut 
    labore et | dolore magna aliqua. | Ut enim ad minim veniam, 
    quis nostrud | exercitation ullamco | laboris 
    nisi ut | aliquip ex ea commodo | consequat. Duis aute irure 

    AFTER: 
    Lorem ipsum dolor | sit amet, consectetur | adipisicing elit,   
    sed do eiusmod  | tempor incididunt  | ut       
    labore et   | dolore magna aliqua. | Ut enim ad minim veniam, 
    quis nostrud  | exercitation ullamco | laboris     
    nisi ut   | aliquip ex ea commodo | consequat. Duis aute irure 

Notas:

  • que sería bueno hacer esto sobre la base de cualquier delimitador arbitrario, no sólo el tubo carácter.

  • Si no ha encontrado la forma de hacerlo, pero usted sabe de un plug-in, que ayuda, pero la preferencia va a alguien que tiene una solución de trabajo que se han utilizado antes

+2

No tengo uso, pero lo que estás buscando es el complemento [align.vim] (http://www.vim.org/scripts/script.php?script_id=294). –

Respuesta

13

Si utiliza el plugin Align, usted podría simplemente:

  1. seleccionar visualmente el texto con V
  2. Tipo :Align |

Dónde | es cualquier delimitador

O

  1. seleccionar visualmente el texto con V
  2. Tipo \t|

Para una | atajo predeterminado.

3

No es una bala mágica, y si estás haciendo esto mucho, espero que encuentres/hagas un plugin, pero estos pasos sí funcionan, no requieren nada especial instalado, y es bueno aprenderlos de todos modos ya que generalizan para un toda la gama de tareas.

  1. :set noet para asegurarse de que no está expandiendo las pestañas en los espacios.
  2. :set ts=25 para establecer un buen tamaño de tabulación grande.
  3. :%s/\w*|\w*/\t|\t/g para agregar una sola tabulación alrededor de las tuberías en lugar de espaciado arbitrario.
  4. :set et para hacer que las pestañas se conviertan de nuevo en espacios cuando
  5. :retab para convertirlos.
  6. En este punto, las cosas están bien alineadas, pero puede haber un espaciado excesivo. Así que use el modo de bloque visual (Ctrl + v) para ordenar las cosas.

Uso combinaciones de este tipo de cosas con frecuencia para una amplia gama de tareas de manipulación de texto. El modo de bloque visual es extremadamente útil y no he visto muchos otros editores que tengan algo comparable. Vea también :help blockwise-examples.

2

Damian Conway tiene una serie de artículos sobre Vim en IBM Developer Works. Éste:

http://www.ibm.com/developerworks/linux/library/l-vim-script-2/index.html

muestra cómo crear una función de alinear los operadores de asignación. Está en la sección llamada Una función para ayudarlo a codificar. Creo que podrías generalizarlo según tus necesidades. O usa el complemento Align. A veces me siento dividido entre escribir mi propia herramienta, de la cual puedo aprender algo, y obtener la herramienta de otra persona, que a menudo es mejor que la mía, y me permite volver a trabajar más rápido.

Por cierto, toda la serie es excelente, y hay más por venir. El último párrafo del último artículo dice:

Por lo tanto, en el próximo artículo de esta serie vamos a explorar simple plug-in de Vim arquitectura, que le permite factorizar partes de su .vimrc y aislar en separada módulos. Veremos cómo funciona el sistema de complemento desarrollando un módulo independiente que mejore algunos de los horrores del trabajo con XML.

Cuestiones relacionadas