Question Faire Vim montrer TOUS les espaces blancs comme un personnage


Je n'arrive pas à trouver un moyen de faire en sorte que Vim montre tous les espaces blancs en tant que personnage. Tout ce que j'ai trouvé était sur les onglets, les espaces de fuite, etc.


654
2017-11-04 18:17


origine


Réponses:


Comme d'autres l'ont dit, vous pouvez utiliser

:set list

qui, en combinaison avec

:set listchars=...

afficher les caractères invisibles.
Maintenant, il n'y a pas une option explicite que vous pouvez utiliser pour montrer espace, mais dans les listchars, vous pouvez définir un caractère à afficher pour tout mais espace. Par exemple, le mien ressemble à ceci

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

donc, maintenant, après que vous utilisez

:set list

tout ce qui n'est pas explicitement montré comme quelque chose d'autre, est alors, vraiment, un simple espace blanc.

Comme d'habitude, pour comprendre comment listchars fonctionne, utilisez l'aide. Il fournit d'excellentes informations sur les caractères qui peuvent être affichés (comme l'espace de fin, par exemple) et comment le faire:

:help listchars

Il peut être utile d'ajouter une bascule pour que vous puissiez voir les changements au milieu de l'édition facilement (source: VIM: définir la liste! comme une bascule dans .vimrc):

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>

589
2017-11-04 18:30



:set list autoriser.

:set nolist désactiver.


209
2017-11-04 19:43



À partir du patch 7.4.710 vous pouvez maintenant définir un caractère à afficher à la place de l'espace en utilisant les listchars!

:set listchars+=space:␣

Donc, pour montrer TOUT caractères espace blanc en tant que caractère, vous pouvez effectuer les opérations suivantes:

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

Discussion sur la liste de diffusion: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q


190
2018-04-22 03:46



Je pense que les autres réponses ici sont plus complètes, mais je pensais partager un truc que j'utilise habituellement pour différencier visuellement les onglets et les espaces:

:syntax on
:set syntax=whitespace

Ce sont des règles de mise en évidence de la syntaxe pour le Langage de programmation Whitespace - Les onglets apparaissent en vert et les espaces en rouge. :)

Peut être combiné avec :set list comme mentionné par beaucoup d'autres réponses, bien que les onglets montreront alors comme ^ I sans un higlight vert, mais les espaces montreront en rouge.


162
2017-09-25 18:27



:set list montrera tous les espaces blancs en tant que personnage. Tout mais un espace aura l'air différent de son état normal, ce qui signifie que si vous voyez toujours un espace ancien, c'est vraiment un ancien espace. :)


75
2017-11-04 18:20



Si vous définissez:

:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none

puis effectuez une recherche d'espace, chaque caractère d'espace s'affichera en tant que caractère souligné.

Vous pouvez utiliser cette commande dans une fonction pratique qui bascule le "soulignement" des espaces.

set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
    if g:HLSpace
        highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
        let @/ = " "
    else
        highlight clear
        silent colorscheme "".g:HLColorScheme
        let @/ = ""
    endif
    let g:HLSpace = !g:HLSpace
endfunction

Mappez la fonction sur une touche de raccourci avec:

nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>

NB: Définissez la fonction dans vimrc après que le paramètre colorscheme a été défini.


70
2017-11-04 18:33



En fonction de vos règles de syntaxe pour le tampon actuel, quelque chose comme ça pourrait fonctionner:

:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv

Cela nécessite un vim 7.3 avec + fonction de dissimulation

Mise à jour 24/10/2014 Pour développer un peu sur cela. Il est bien sûr possible de définir quelques surlignages pour les caractères conilés.

  • Vous pouvez configurer, à quoi ressemblent les caractères cachés. Pour mettre en surbrillance, vous devez au moins une fois configurer le groupe de mise en surbrillance «Dissimuler» (voir l'aide au :h hl-Conceal Cela peut être fait dans votre colorscheme et vous n'avez pas besoin de le reconfigurer à nouveau. Mais ceci affecte tous les caractères cachés (par exemple si votre script de syntaxe cache d'autres éléments, ils seront affichés en tant que 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 moyen de contourner (peut-être ce sera corrigé, j'ai posté un pièce)

  • Il semble y avoir un patch flottant, qui permettra de personnaliser l'apparence des espaces list mode. Le dernier au moment de l'écriture semble être celui-là. (Cela signifie que vous devez construire votre propre Vim pour l'utiliser).
  • le conceallevel et concealcursor sont des options locales de fenêtre. Cela signifie qu'ils peuvent être différents dans différentes fenêtres (et seront peut-être aussi définis par des plugins filetype ou d'autres scripts plugin).
  • Les groupes de mise en évidence syntaxique doivent être exécutés chaque fois qu'un fichier de définition de syntaxe est rechargé. Cela pourrait être fait en utilisant un BufWinEnterou peut-être aussi un Syntax ou même FileType autocommande. (Je n'ai pas testé lequel fonctionne réellement).

Les deux derniers éléments signifient que vous devez configurer des autocommandes qui réinitialisent les règles de syntaxe et les options correspondantes. Pour le premier, on pourrait vouloir mettre en surbrillance en utilisant un ColorScheme autocommand (de sorte que les caractères masqués aient toujours la même apparence, indépendamment de ce que les couleurs définissent réellement). Pour une solution complète, regardez dans la réponse romain, cela devrait vous donner un début. Si vous configurez une fonction, vous pouvez facilement configurer une commande à bascule pour activer ou désactiver la mise en surbrillance spéciale.

Mise à jour le 26/10/2014 J'ai fait un brancher hors de cette question.

Mise à jour le 22/04/2015 Un patch a été inclus dans Vim qui rend cela possible en utilisant le list option. Simplement définir set list listchars+=space:␣  Cela fonctionne à partir de Vim 7.4.711


42
2018-06-08 13:18