Je voudrais convertir l'onglet en espaces dans gVim. J'ai ajouté la ligne suivante à mon _vimrc
:
set tabstop=2
Cela fonctionne pour s'arrêter à deux espaces mais il semble toujours qu'une touche de tabulation soit insérée (j'ai essayé d'utiliser la touche h pour compter les espaces par la suite).
Je ne sais pas quoi faire pour que gVim convertisse les onglets en espaces?
IIRC, quelque chose comme:
set tabstop=2 shiftwidth=2 expandtab
devrait faire l'affaire. Si vous avez déjà des onglets, effectuez un suivi avec une ER globale Nice pour les remplacer par des espaces doubles.
Une fois que vous avez développé la boîte de dialogue comme indiqué dans les autres réponses, le moyen extrêmement pratique de convertir les fichiers existants en fonction de vos nouveaux paramètres est:
:retab
Cela fonctionnera sur le tampon actuel.
Essayer
set expandtab
pour les onglets mous.
Pour corriger les onglets préexistants:
:%s/\t/ /g
J'ai utilisé deux espaces puisque vous avez déjà défini votre tabstop à 2 espaces.
Cela a fonctionné pour moi:
vous pouvez voir les onglets en commençant par ceci:
:set list
puis pour permettre de remplacer les onglets, procédez comme suit:
:set expandtab
ensuite
:retab
maintenant tous les onglets ont été remplacés par des espaces, vous pouvez alors revenir à l'affichage normal comme ceci:
:set nolist
gg=G
réindente le fichier entier et supprime la plupart, sinon tous les onglets que j’obtiens dans les fichiers de collègues.
Ajouter les lignes suivantes à votre .vimrc
set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>
Ouvrez un fichier dans vim et appuyez sur F2. Les onglets seront convertis en 4 espaces et le fichier sera automatiquement enregistré.
Si vous souhaitez que votre \t
soit égal à 8 espaces, envisagez de définir:
set softtabstop=2 tabstop=8 shiftwidth=2
Cela vous donnera deux espaces par <TAB>
appuyé, mais le \t
actuel dans votre code sera toujours vu avec 8 caractères.
première recherche d'onglets dans votre fichier:/^ I: set expandtab: retab
marchera.
expand
est un utilitaire Unix permettant de convertir des tabulations en espaces. Si vous ne voulez pas utiliser set
dans vim, vous pouvez utiliser une commande Shell de vim:
:!% expand -t8
Cela a fonctionné pour moi:
:set tabstop=2 shiftwidth=2 expandtab | retab
Cet article contient un excellent script vimrc pour la gestion des tabulations + espaces et la conversion entre eux.
Ces commandes sont fournies:
Space2Tab Convertit les espaces en onglets, uniquement en retrait.
Tab2Space Convertit les onglets en espaces, uniquement en retrait.
RetabIndent Exécutez Space2Tab (si 'expandtab' est défini) ou Tab2Space (sinon).
Chaque commande accepte un argument spécifiant le nombre d'espaces dans une colonne à onglets. Par défaut, le paramètre "tabstop" est utilisé.
Source: 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>)
Cela m'a aidé un peu plus que les réponses fournies lorsque j'ai commencé à chercher une solution.