Pregunta

Me gustaría convertir la pestaña a espacios en gVim. Agregué la siguiente línea a mi _vimrc:

set tabstop=2

Funciona para detenerse en dos espacios, pero todavía parece que se ha insertado una tecla de tabulación (intenté usar la tecla h para contar espacios después).

No estoy seguro de qué debo hacer para que gVim convierta pestañas en espacios.

¿Fue útil?

Solución

IIRC, algo así como:

set tabstop=2 shiftwidth=2 expandtab

debería hacer el truco. Si ya tiene pestañas, siga con un buen RE global para reemplazarlos con espacios dobles.

Otros consejos

Una vez que haya expandido la pestaña según las otras respuestas, la forma extremadamente conveniente de convertir archivos existentes de acuerdo con su nueva configuración es:

:retab

Funcionará en el búfer actual.

Probar

set expandtab

para pestañas suaves.

Para arreglar pestañas preexistentes:

:%s/\t/  /g

Utilicé dos espacios ya que configuraste tu tabulación en 2 espacios.

Esto funcionó para mí:

puedes ver pestañas con esto primero:

:set list

luego para que sea posible reemplazar pestañas, haga esto:

:set expandtab

luego

:retab

ahora todas las pestañas han sido reemplazadas por espacios luego puede volver a la visualización normal de esta manera:

:set nolist

gg=G reindentará todo el archivo y eliminará la mayoría, si no todas, las pestañas que obtengo en los archivos de mis compañeros de trabajo.

Agregue las siguientes líneas a su .vimrc

set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>

Abra un archivo en vim y presione F2 Las pestañas se convertirán a 4 espacios y el archivo se guardará automáticamente.

Si desea mantener su \t igual a 8 espacios, considere configurar:

   set softtabstop=2 tabstop=8 shiftwidth=2

Esto le dará dos espacios por <TAB> pulsación, pero los <=> reales en su código aún se verán como 8 caracteres.

primero busque pestañas en su archivo: / ^ I : establecer expandtab : retab

funcionará.

expand es una utilidad de Unix para convertir pestañas en espacios. Si no quiere set nada en vim, puede usar un comando de shell desde vim:

:!% expand -t8

Esto me funcionó:

:set tabstop=2 shiftwidth=2 expandtab | retab

Este artículo tiene un excelente script vimrc para manejar pestañas + espacios y convertirlos entre ellos.

  

Estos comandos se proporcionan:

     

Space2Tab Convierta espacios en pestañas, solo en sangría.

     

Tab2Space Convertir pestañas a espacios, solo en sangría.

     

RetabIndent Ejecute Space2Tab (si se establece 'expandtab') o Tab2Space (de lo contrario).

     

Cada comando acepta un argumento que especifica el número de espacios en una columna de tabulación. De forma predeterminada, se utiliza la configuración de "tabulación".

Fuente: http://vim.wikia.com/wiki/Super_retab#Script

" Return indent (all whitespace at start of a line), converted from
" tabs to spaces if what = 1, or from spaces to tabs otherwise.
" When converting to tabs, result has no redundant spaces.
function! Indenting(indent, what, cols)
  let spccol = repeat(' ', a:cols)
  let result = substitute(a:indent, spccol, '\t', 'g')
  let result = substitute(result, ' \+\ze\t', '', 'g')
  if a:what == 1
    let result = substitute(result, '\t', spccol, 'g')
  endif
  return result
endfunction

" Convert whitespace used for indenting (before first non-whitespace).
" what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces).
" cols = string with number of columns per tab, or empty to use 'tabstop'.
" The cursor position is restored, but the cursor will be in a different
" column when the number of characters in the indent of the line is changed.
function! IndentConvert(line1, line2, what, cols)
  let savepos = getpos('.')
  let cols = empty(a:cols) ? &tabstop : a:cols
  execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e'
  call histdel('search', -1)
  call setpos('.', savepos)
endfunction

command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>)
command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>)
command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>)

Esto me ayudó un poco más que las respuestas aquí cuando busqué una solución por primera vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top