Frage

Ich möchte Registerkarte Räume in gVim konvertieren. Ich fügte hinzu, die folgende Zeile in meinem _vimrc:

set tabstop=2

Es funktioniert auf zwei Räume zu stoppen, aber es sieht immer noch wie eine Tab-Taste eingefügt wird (ich versuchte, die h-Taste zu verwenden, Räume zu zählen danach).

Ich bin mir nicht sicher, was soll ich tun, um Räume zu machen gVim konvertieren Registerkarten?

War es hilfreich?

Lösung

IIRC, so etwas wie:

set tabstop=2 shiftwidth=2 expandtab

sollte es tun. Wenn Sie bereits Tabs haben, es dann mit einem schönen globalen RE folgen, um sie mit doppelten Leerzeichen ersetzt werden.

Andere Tipps

Sobald Sie bekam expandtab auf nach den anderen Antworten, die äußerst bequeme Möglichkeit, vorhandene Dateien nach Ihren neuen Einstellungen zu konvertieren ist:

:retab

Es wird auf den aktuellen Puffer arbeiten.

Versuchen

set expandtab

für Kautabletten.

Um dies zu beheben vorbestehenden Registerkarten:

:%s/\t/  /g

Ich habe zwei Räume, da Sie bereits Ihre tabstop auf 2 Felder gesetzt.

Dieser arbeitete für mich:

Sie können Tabs mit erstem dies zu tun:

:set list

dann macht es möglich, diese zu ersetzen Tabs dann tun:

:set expandtab

dann

:retab

jetzt alle Registerkarten wurden durch Leerzeichen ersetzt Sie können dann zur normalen Anzeige wie folgt zurück:

:set nolist

gg=G wird die gesamte Datei und entfernt die meisten reindent, wenn nicht alle Registerkarten ich in Dateien von Mitarbeitern bekommen.

Fügen Sie folgende Zeilen zu Ihrer .vimrc

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

Öffnen Sie eine Datei in vim und drücken Sie F2 Die Tabs werden auf 4 Leerzeichen umgewandelt werden und Datei wird automatisch gespeichert werden.

Wenn Sie Ihren \t gleich 8 Räume halten wollen, dann betrachten Einstellung:

   set softtabstop=2 tabstop=8 shiftwidth=2

Dies gibt Ihnen zwei Räume pro <TAB> Presse, aber tatsächlicher \t in Ihrem Code wird immer noch als 8 Zeichen angezeigt werden.

erste Suche nach Registerkarten in der Datei: / ^ I : Set expandtab : Retab

funktioniert.

expand ist ein Unix-Dienstprogramm Tabs zu Leerzeichen konvertieren. Wenn Sie irgendetwas in vim nicht set möchten, können Sie einen Shell-Befehl aus vim verwenden:

:!% expand -t8

Das hätte es für mich arbeiten:

:set tabstop=2 shiftwidth=2 expandtab | retab

Dieser Artikel hat eine ausgezeichnete vimrc Skript für Tabs + Räume Handhabung und Umwandlung zwischen ihnen.

  

Diese Befehle stehen zur Verfügung:

     

Space2Tab Konvertieren von Leerzeichen zu Tabulatoren, nur in Einzüge.

     

Tab2Space Konvertieren von Tabulatoren in Leerzeichen, nur in Einzüge.

     

RetabIndent Ausführen Space2Tab (wenn 'expandtab' gesetzt ist), oder Tab2Space (sonst).

     

Jeder Befehl akzeptiert ein Argument, das die Anzahl der Leerzeichen in einer Lasche Spalte angibt. Standardmäßig wird die ‚tabstop‘ Einstellung verwendet.

Quelle: 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>)

Das half mir ein bisschen mehr als die Antworten hier tat, als ich nach einer Lösung zunächst die Suche ging.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top