[Linux] Vim

Marc Chantreux mc@::1
Mar 25 Jan 15:20:54 CET 2022


salut à tous,

je répond ici à une question posée par Xavier histoire d'avoir des
réponses peut-être moins tranchées (plus savantes) que la mienne sur le sujet.

> sur VIM, je print les whitspace mais j'ai voulu également afficher les tabs.
> Mais le caractère du tab reste identique à celui des whitespace.
> du genre whitespace charactère -> "OOOOO"
>          tab charactère  -> "~~~~~"
> avec: set listchars=eol:$,nbsp:_,tab:>~,trail:O,extends:>,precedes:<

ton listchars a l'air ok. c'est donc que ce que tu crois être des
tabs sont en fait des espaces. vim permet de gérer tout ca assez
finement.

en gros:

* indenter c'est: (depuis n'importe ou sur la ligne)

                 │ normal  │ insert
        indent+1 │ >       │  ^t
        indent-1 │ <       │  ^d

* pour tabuler c'est <tab>

dans les 2 cas, la question est de savoir si tu veux 'expand les tabs'
(comme dans les commandes unix expand(1) et unexpand(1)).

pour savoir quoi faire de ses demandes, vim utilise les options
* 'et pour extend les tab en espaces
* 'ts 'sw et 'sts pour savoir quand il faut mettre combien d'espaces ou de tabs.

si t'as pas d'avis sur la question: ma façon de faire est de garder les
tabs:
* c'est des caractères en moins
* ca permet a chacun de régler la façon dont les indentations
  s'affichent visuellement
* les heredocs (shell scripting) peuvent s'indenter avec des tabs \o/

coté config donc:

	pour toggle et: (lire :h toggle)
		:set et!

	mon réglage par défaut:
		:set noet sw=1 ts=4 sts=4

	mes vimmodes actuels:
		# vim: noet

mais attention: plein de langages/projets/coding styles utilisent
les espaces (souvent l'équivalent de set et ts=4). je me souviens avoir
lu les raisons dans les années 90 mais j'étais moyennement convaincu par les
arguments des uns et des autres.

si tu veux plus d'infos sur le sujet, les sections de :help qui
t'intéressent:

* 'et
* 'sw
* 'ts
* 'sts
* i^t
* i^d
* >
* <
* indent.txt

bonne lecture ;)

marc


Plus d'informations sur la liste de diffusion linux