2011-08-05 17 views
46

cuando tenga mi vimrc aquí:¿Cómo puedo insertar un carácter de tabulación real en Vim?

set tabstop=2 
set shiftwidth=2 
set softtabstop=2 
set expandtab 
set smarttab 

Y tener instalado el plugin SUPERTAB. Cada vez que estoy en el modo de inserción, presiono la pestaña, muestra la autocompletación, pero a veces me gustaría insertar un carácter de tabulación real en una cadena literal como. Entonces, ¿qué quiero decir cada vez que presiono tabulación entre comillas dobles literalmente, debería ingresar un verdadero carácter de tabulación?

Respuesta

78

Mientras que en el modo de inserción o en el modo de comando (el símbolo : en la parte inferior del editor), tipo CTRL + V entonces TAB.

Usando CTRL +V señales Vim que debería tener el siguiente carácter literalmente. Incluso en modo insertar.

ACTUALIZACIÓN:

Como se ha señalado por Herbert de asiento, si gVim está en el modo de Windows (por defecto), debe utilizar CTRL +Q en lugar de CTRL +V.

+0

Eso es todo, pero en Windows si la compatibilidad de victorias está activado en vimrc (que es el valor por defecto) que tiene que hacer 'CTRL' + 'Q' luego' TAB'. –

+0

@Herbert Sitz: Buen punto. Olvidé todo sobre el modo de Windows para gVim. Lo notaré también. –

+0

CTRL + Q simplemente me pone en modo de bloque visual para que una TAB posterior no haga nada. ¿Me estoy perdiendo de algo? Algo mal con mi configuración tal vez? –

0

@Samnang: Tengo una configuración similar a la tuya; desafortunadamente, la respuesta de Jason no funcionó, para mí.

Esta es una solución alternativa:

  • Sustituto de algún personaje (por ejemplo, un acento grave: `) o caracteres (por ejemplo, una cadena alfanumérica única: zzz) en la que desea la pestaña (s)
  • Seleccione el texto (modo visual) y hacer una búsqueda/reemplazar,

    :'s/`/\t/g

Respuesta actualizada, inspirada en el comentario de @ Cyryl1972.

ficha Insertar en el principio de todas las líneas (nota también: hay necesidad de seleccionar líneas, para cualquiera de los siguiente código, como el que está incluido en la parte de red adecuado de la expresión):

:1,$s/^/\t\1/ 

pestaña Inerte después de los primeros 10 caracteres en todas las líneas:

:1,$s/^\(.\{10}\)/\1\t/ 

Explicación - primera parte:

:1,$  Match from line 1 to end of file 
^(.{10} Collect (preserve) all text from beginning of line to position 10 
      (you need to escape the parentheses, \(and \), as well the FIRST 
      (left) curly brace, only: \{ -- as it, { , appears to have special 
      meaning in regex when used for this purpose 

Explicación - segunda parte:

/1  Add back the preserved text 
\t  Insert a tab 

... y el resto de la línea también se restaura automáticamente.

línea actual, únicamente:

:s/^/\t\1/ 

Ejemplo: lengüeta de la tapa en la posición 10 (0 indexados) en las líneas 2-4:

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

:2,4s/^\(.\{10}\)/\1\t/ 

1234567890abcdefghij 
1234567890 abcdefghij 
1234567890 abcdefghij 
1234567890 abcdefghij 
1234567890abcdefghij 

Referencias (StackOverflow):

Referencias (otros):

+0

la solución también funciona:: 1, $ s/^ \ (. \)/\ T \ 1/(inserte una tabulación antes del primer carácter de todas las líneas) – Cyryl1972

Cuestiones relacionadas