tutorial - Reemplazar pestaña con espacios en Vim
vim buscar y reemplazar (10)
Añade las siguientes líneas a tu .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.
Me gustaría convertir la pestaña a espacios en gVim. _vimrc
la siguiente línea a mi _vimrc
:
set tabstop=2
Funciona para detenerse en dos espacios, pero aún parece que se insertó una tecla de tabulación (intenté usar la tecla h para contar los espacios después).
No estoy seguro de qué debo hacer para hacer que gVim convierta las pestañas en espacios.
Este artículo tiene una excelente secuencia de comandos vimrc para manejar tabulaciones + espacios, y convertir entre ellos.
Estos comandos se proporcionan:
Space2Tab Convierte espacios a pestañas, solo en sangrías.
Tab2Space Convierte tabulaciones a espacios, solo en sangrías.
RetabIndent Ejecuta Space2Tab (si está establecido ''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 ''tabstop''.
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 que obtuve la primera vez que busqué una solución.
IIRC, algo como:
set tabstop=2 shiftwidth=2 expandtab
debe hacer el truco Si ya tiene pestañas, luego continúe con una buena RE global para reemplazarlos con espacios dobles.
Si desea mantener su /t
igual a 8 espacios, considere la posibilidad de configurar:
set softtabstop=2 tabstop=8 shiftwidth=2
Esto le dará dos espacios por cada pulsación de <TAB>
, pero el valor real en su código aún se verá como 8 caracteres.
Tratar
set expandtab
para las pestañas blandas.
Para arreglar pestañas preexistentes:
:%s//t/ /g
Utilicé dos espacios ya que ya configuraste tu tabstop a 2 espacios.
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.
primera búsqueda de pestañas en su archivo: / ^ I: set expandtab: retab
trabajará.
expand
es una utilidad de Unix para convertir pestañas en espacios. Si no desea set
nada en vim, puede usar un comando de shell desde vim:
:!% expand -t8
gg=G
reindentará el archivo completo y eliminará la mayoría, si no todas las pestañas que recibo de los compañeros de trabajo.
Esto funcionó para mí:
Puedes ver pestañas haciendo esto primero:
:set list
Luego, para hacer posible reemplazar las pestañas, haz esto:
:set expandtab
entonces
:retab
ahora todas las pestañas han sido reemplazadas por espacios en los que puede volver a la visualización normal de esta forma:
:set nolist