Je ne trouve pas de moyen de faire en sorte que Vim affiche tous les espaces blancs en tant que personnage. Tout ce que j'ai trouvé concerne les tabulations, les espaces de fin, etc.
772
Je ne trouve pas de moyen de faire en sorte que Vim affiche tous les espaces blancs en tant que personnage. Tout ce que j'ai trouvé concerne les tabulations, les espaces de fin, etc.
:set list
. Cela ne répond pas à notre question. (Pour les autres arrivants: la réponse de mrucci ci-dessous est utile, mais pas vraiment une vraie solution .)list
etlistchars
considèrent qu'un espace suit directement un onglet. Ce serait presque invisible dans cette situation. Je suis d'accord que vous pouvez attraper la plupart des situations, mais ce serait bien d'avoir une mise en évidence appropriée de tous les espaces.Réponses:
Comme d’autres l’ont dit, vous pouvez utiliser
qui, en combinaison avec
afficher des caractères invisibles.
Maintenant, il n'y a pas d'option explicite que vous pouvez utiliser pour afficher les espaces, mais dans listchars, vous pouvez définir un caractère à afficher pour tout MAIS les espaces. Par exemple, le mien ressemble à ceci
donc, maintenant, après avoir utilisé
tout ce qui n'est pas explicitement montré comme autre chose, est alors, vraiment, un vieil espace tout simple.
Comme d'habitude, pour comprendre comment ça
listchars
marche, utilisez l'aide. Il fournit d'excellentes informations sur les caractères pouvant être affichés (comme l'espace de fuite, par exemple) et comment le faire:Il pourrait être utile d'y ajouter une bascule afin que vous puissiez voir facilement les modifications en cours d'édition (source: VIM: set list! Comme bascule dans .vimrc ):
la source
.vimrc
fichier, afin que cette jolie façon d'afficher des caractères invisibles puisse être facilement activée:set list
à tout moment (sans googler cette page à nouveau).Depuis le patch 7.4.710, vous pouvez désormais définir un personnage à afficher à la place de l'espace à l'aide de listchars!
Ainsi, pour afficher TOUS les caractères d'espace blanc en tant que caractère, vous pouvez procéder comme suit:
Discussion sur la liste de diffusion: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
la source
:help listchars
pour vérifier si «espace» est une option valide pour «listchars». Si ce n'est pas le cas, mettez à niveau votre vim vers le patch @brettanomyces spécifié. Ou laissez simplement "espace" hors de la commande set si vous ne voulez pas voir les espaces.space:·
), car il ressemble à MS Word, Notepad ++, etc.<C-K>.M
vim pour·
. Voir:h digraph
pour plus de détails.:set list
autoriser.:set nolist
pour désactiver.la source
: set list!
c'est mieux :)Shift
et!
sont plus difficiles à taper queno
. Si vous le mettez dans votre fichier .vimrc, je conviens que le formulaire d'exclam est plus facile à lire.:set list!
le ferez sans que vous ayez à entrernolist
. Le fait!
simplement le contraire de tout ce qui est actuellement défini. Je l'utilise tout le temps surtout avec:set paste!
. Je déteste appuyer sur la touche fléchée pour trouver:set paste
ou:set nopaste
lolJe pense que d'autres réponses ici sont plus complètes, mais j'ai pensé partager une astuce que j'utilise habituellement pour différencier visuellement les tabulations et les espaces:
Ce sont des règles de coloration syntaxique pour le langage de programmation Whitespace espaces - les onglets s'affichent en vert et les espaces en rouge. :)
Peut être combiné avec
:set list
comme mentionné par de nombreuses autres réponses, bien que les onglets s'affichent alors comme ^ I sans voyant vert, mais les espaces s'affichent en rouge.la source
:set list
affichera tous les espaces en tant que personnage. Tout sauf un espace sera différent de son état normal, ce qui signifie que si vous voyez toujours un vieil espace ordinaire, c'est vraiment un vieil espace ordinaire. :)la source
:set nolist
!
à la fin:set list!
:se hls | /\_s
pour cela. Obtient tout tandisset list
qu'ignore les espaces. De nouveau avec:se nohls
. Détails à ce sujet sur ce post: albertech.blogspot.com/2015/02/…Si vous définissez:
puis effectuez une recherche d'espace, chaque caractère d'espace sera affiché comme un caractère de soulignement.
Vous pouvez utiliser cette commande dans une fonction pratique qui bascule le "soulignement" des espaces.
Mappez la fonction à une touche de raccourci avec:
NB: Définissez la fonction dans vimrc après avoir défini le schéma de couleurs.
la source
Selon vos règles de syntaxe pour le tampon actuel, quelque chose comme ça pourrait fonctionner:
Cela nécessite un vim 7.3 avec une fonction + dissimulation
Mise à jour 24/10/2014 Pour développer un peu plus à ce sujet. Il est bien sûr possible de définir des surlignages pour les caractères masqués.
Vous pouvez configurer l'apparence des caractères cachés. Pour la mise en surbrillance, vous devez configurer au moins une fois le groupe de mise en surbrillance "Dissimuler" (voir l'aide sur
:h hl-Conceal
Ceci peut être fait dans votre schéma de couleurs et vous n'avez pas besoin de le reconfigurer à nouveau. Mais cela affecte tous les caractères masqués (par exemple si votre le script de syntaxe masque quelques éléments supplémentaires, ils seront affichés comme vos caractères d'espace blanc. Cela pourrait ressembler à ceci::hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Il semble y avoir une particularité que Vim ne mettra pas en évidence les espaces, si le script de syntaxe utilise le
skipwhite
mot - clé. Il n'y aura pas de solution (peut-être que ce sera corrigé, j'ai posté un patch )list
mode. Le dernier en date de la rédaction semble être celui-ci . (Cela signifie que vous devez créer votre propre Vim pour l'utiliser).conceallevel
etconcealcursor
sont des fenêtres. Cela signifie qu'ils peuvent être différents dans différentes fenêtres (et seront éventuellement également définis par des plugins de type de fichier ou d'autres scripts de plugin).BufWinEnter
ou éventuellement uneSyntax
ou même uneFileType
autocommande. (Je n'ai pas testé lequel fonctionne réellement).Les deux derniers éléments signifient que vous devrez configurer des autocommandes qui réinitialisent les règles de syntaxe et les options correspondantes. Pour le premier, on peut vouloir configurer la mise en évidence à l'aide d'un
ColorScheme
autocommande (de sorte que les caractères cachés soient toujours les mêmes, indépendamment de ce qu'un jeu de couleurs configure réellement). Pour une solution complète, regardez dans la réponse romainl, qui devrait vous donner un début. Si vous configurez une fonction, vous pouvez facilement configurer une commande à bascule pour activer ou désactiver l'affichage de la surbrillance spéciale.Mise à jour 26/10/2014 J'ai créé un plugin à partir de cette question.
Mise à jour 22/04/2015 Un correctif a été inclus dans Vim qui rend cela possible en utilisant l'
list
option. Simplement régléset list listchars+=space:␣
Cela fonctionne à partir de Vim 7.4.711la source
.vimrc
?Æ
est un étrange choix de personnage pour cela, pourquoi pas·
?J'utilise ceci
pour mettre en valeur les espaces blancs. Il recherche tous les espaces blancs, puis active la surbrillance pour les faire ressortir. Cependant, il n'imprime pas de caractère spécial.
la source
nnoremap <leader><space> :noh<cr>
)Si par espaces, vous entendez le caractère '', ma suggestion serait simplement une recherche / remplacement. Comme les autres l'ont laissé entendre,
set list
remplace les caractères non imprimables par un caractère visible configuré danslistchars
.Pour afficher explicitement les espaces comme un autre caractère, quelque chose de similaire à celui ci-dessous devrait faire l'affaire:
:%s/ /█/g
Annulez ensuite la modification pour revenir en arrière.
(pour obtenir le █ j'appuie sur cette séquence de touches exacte: :%s/ /CTRL-KFB/g)
la source
:set list
moi, changeant le caractère visible ('espace') en _non priting_ (??). Je me demande si on peut utiliser cette correspondance interne, par exemple,:match MyBlackBlockChar "appropriate_regex
cela devrait faire l'affaire, non?:%s/\s/█/g
pour tous les espaces. De:set hlsearch
plus , plus:&s/\s//gn
pourrait être utile.Pour mettre en évidence des espaces, recherchez-le simplement:
/ <espace>
Remarques:
Pour mettre en surbrillance les espaces et les tabulations:
/ [<space> <tab>]
Un moyen rapide de supprimer les points forts est de rechercher autre chose: / asdf
(tapez simplement une courte liste de caractères aléatoires)
la source
/<space>
vs/\s
. Je pense qu'il n'est pas évident et plus rapide d'utiliser la suggestion ici.Le code ci-dessous est basé sur la réponse de Christian Brabandt et semble faire ce que l'OP veut:
Ajoutez ces lignes à votre
~/.vimrc
et commencez une nouvelle session Vim pour voir la magie encore imparfaite se produire.N'hésitez pas à modifier les couleurs par défaut et à masquer le caractère.
Attention: quelque chose dans le
*FuncBody
groupe de syntaxe dans plusieurs langues empêche le point central de s'afficher. Je ne sais pas (encore?) Comment rendre cette solution plus fiable.la source
skipwhite
argument dans les règles de syntaxe, qui empêche le groupe de syntaxe de correspondre (bien qu'il devrait être autorisé à être contenu dans tous les groupes).J'ai été frustré par toutes les autres réponses à cette question, car aucune d'entre elles ne met en valeur le caractère spatial de manière utile. Afficher les espaces sous forme de caractères serait particulièrement utile pour les langues au format blanc, où le mélange des tabulations et des espaces est dangereux.
Ma solution est d'afficher des tabulations et de souligner plusieurs espaces. Il emprunte à la réponse de mrucci et à ce tutoriel . Parce qu'il utilise la coloration syntaxique, il est persistant:
En utilisant cela, les onglets sont affichés en tant que
|
et les espaces en tant que_
, ce qui rend très facile de savoir quand je mélange des styles de code.Le seul inconvénient que j'ai trouvé est que cet extrait de code n'ajuste pas la couleur d'arrière-plan pour correspondre au contexte (comme dans un commentaire).
la source
toutes les réponses ci-dessus tentent de rendre les espaces visibles depuis vim. Si vous insistez vraiment pour avoir des espaces visibles sous forme de points, il existe une autre approche ...
Si cela ne peut pas être fait dans vim, changez entièrement votre police. J'ai copié la police Ubuntu One Mono et l'ai modifiée à l'aide de FontForge. N'oubliez pas de changer le nom complet de la police, sa famille, sa famille préférée, sa compatibilité complète (dans FontFoge, c'est sous les noms TTF dans les informations sur la police), afin de l'avoir comme police distincte. Modifiez simplement le caractère espace pour avoir un point au milieu et enregistrez la police dans ~ / .fonts Maintenant, vous pouvez l'utiliser pour votre gvim ou tout le terminal ... J'ai copié le "!" , a supprimé la ligne et déplacé le point au milieu. Cela a pris un peu plus de 5 minutes ...
Remarque: la modification du caractère d'espace (0x20) entraîne l'inconvénient d'avoir des points sur tout l'écran vim ... (mais cela séparera les espaces des tabulations ...)
la source
Je n'ai pas trouvé exactement ce que je voulais des réponses existantes. Le code ci-dessous mettra en évidence tous les espaces de fin en rouge vif. Ajoutez simplement ce qui suit à votre
.vimrc
la source
évite le bit "vous devez rechercher des espaces pour les faire apparaître", mais afaict ne peut pas être configuré pour faire des choses non éclairantes sur les espaces. CursorLine peut être n'importe quel groupe de mise en évidence et dans le thème par défaut, c'est un simple soulignement.
la source
J'aime utiliser des caractères spéciaux pour montrer les espaces, c'est plus clair. Même une carte à basculer est une caractéristique clé, pour une vérification rapide.
Vous pouvez trouver ces fonctionnalités dans un ancien script vim non mis à jour depuis 2004:
vim-scripts/[email protected]
Grâce aux projets vim-scripts et vundle vous pouvez faire revivre ce plugin
vim-scripts / cream-showinvisibles @ github
Encore mieux, mes deux cents à ce sujet consistent à ajouter un raccourci configurable (au lieu de prédéfiniF4 )
alors ajoutez ceci à ~ / .vimrc
installer le plugin sur vim
et voilà
la source
Pour couvrir les espaces blancs Unicode:
Le résultat:
")
│
" (deux caractères: un long tuyau puis un espace ordinal; ils sont gris encolorscheme murphy
)·
" (un caractère; il est griscolorscheme murphy
)"
la source
set listchars=tab:»\ ,space:·
pour votre référence.gvim
etvim
.Vous pourriez utiliser
pour vraiment voir la structure d'une ligne. Vous verrez explicitement des onglets et des sauts de ligne. Quand vous voyez un blanc, c'est vraiment un blanc.
la source
mettre en surbrillance la recherche
en
.vimrc
cela estet recherchez les onglets d'espace et les retours chariot
ou recherchez tous les caractères d'espacement
de recherche de tous les caractères non blancs (les caractères blancs ne sont pas affichés, vous voyez donc les caractères blancs entre les mots, mais pas les caractères blancs finaux)
pour afficher tous les caractères d'espace blanc à la fin - à la fin de la ligne
la source
Gardez ces hacks dans le .vimrc en tant que commentaires, donc dans le shell, simplement:
la source
:se
suffit,:set
n'est pas nécessaire.la source
vous pouvez également mettre en surbrillance les espaces (en remplaçant les espaces par un bloc):
(avant d'écrire défaire)
la source
L'ajout de cela à mon .vimrc fonctionne pour moi. Assurez-vous simplement que vous n'avez rien d'autre en conflit ..
la source