Parfois, je vois une fenêtre ouverte avec un nom scratch
.
Je sais que c'est une sorte de tampon / fenêtre temporaire.
Comment puis-je en créer un?
:h scratch
ne renvoie rien.
buffers
vim-windows
wizzup
la source
la source
:h
commande permet d'accéder à cette aide?:edit
fichier pour modifier un fichier, un nouveau tampon est automatiquement créé. Un tampon vide peut être créé en entrant:enew
ou:new
ou:vnew
. À partir de la FAQ du tampon Vim: vim.fandom.com/wiki/Vim_buffer_FAQ:helpgrep scratch
apparaît comme l'un des 10 résultats (dans mon installation).Je me souviens d'un conseil vim (qui a été migré vers vim.wikia) sur le sujet.
La dernière version de la fonction que j'utilise pour créer des tampons de travail définit également:
'buflisted'
à faux'readonly'
(De mon plugin de bibliothèque VimL: lh-vim-lib)
la source
Un tampon «à gratter» n'est qu'un terme informel pour désigner un endroit où taper du contenu temporaire arbitraire.
Suite à la réponse acceptée et à une autre question, j'ai créé la fonction suivante dans mon vimrc.
La fonction crée un tampon vide dans la fenêtre actuelle et le nomme «scratch». Le tampon de travail n'est pas protégé si vous essayez de quitter. Il sera supprimé sans invite même avec des modifications non enregistrées si vous quittez Vim ou l'effacez (
:bw
).Mettez cette fonction dans votre vimrc. Pour créer un tampon de travail, utilisez
:call Scratch()
.Vous pouvez tester cela rapidement en tirant sur les lignes puis
:@"
. Vous pouvez alors essayer:call Scratch()
.Un fractionnement est utilisé afin que votre tampon actuel ne soit pas affecté lorsque vous créez le tampon de travail.
(Si vous préférez omettre la
split
de la fonction, votre tampon actuel sera "caché" (plus dans une fenêtre) lorsque vous créerez le tampon de travail. Vim s'arrêtera toujours et vous demandera si vous essayez de quitter avec des modifications non enregistrées dans ce tampon).Le tampon de travail aurait normalement le même répertoire de travail que celui dans lequel vous vous trouvez lorsque vous appelez la fonction Scratch. J'ai inclus une ligne commentée pour changer le répertoire de travail du tampon de travail en home. C'est pour ceux qui ont des lignes d'état amusantes qui peuvent afficher le chemin du répertoire courant comme chemin du tampon. Ou tout simplement pour ceux qui le préfèrent.
Vous pouvez définir le tampon de travail pour qu'il soit "répertorié" ou "non répertorié" (répertorié par défaut). Si vous le rendez non répertorié, vous ne le verrez pas dans votre
:buffers
liste, mais il le sera:buffers!
. Décommentez lanobuflisted
ligne si vous préférez qu'elle ne soit pas répertoriée. Répertorié ou non, vous pouvez toujours modifier votre tampon de travail avec:b scratch
. Rendre le tampon de travail répertorié le rend légèrement plus accessible. Par exemple:sball
, l'inclura dans une division.Si vous utilisez
:bw
(effacement du tampon) sur le tampon de travail, Vim supprimera le contenu et supprimera le tampon sans avertissement. Si vous utilisez:bd
(suppression du tampon) sur le tampon de travail, Vim supprimera le contenu sans avertissement et rendra le tampon non répertorié.Vous pouvez créer plusieurs tampons de travail. Vim commence à se plaindre mais vous vous retrouvez toujours avec d'autres.
la source
buftype=hide
avant de définir le nom, il n'est pas nécessaire de modifier le répertoire, car le nom du tampon ne sera pas "traité comme un nom de fichier". Il convient également de mentionner'nobuflisted'
, ce qui empêche le tampon de s'afficher dans la sortie de:ls
. Vous y avez fait allusion, mais vous ne l'avez pas mentionné explicitement.buftype=hide
est en effet un non-sens, et oui, je parlais en faitbuftype=nofile
:). Mais je ne peux pas reproduire le comportement que vous décrivez, et je pense toujours que la déclarationVim buffer names are always filenames
est incorrecte. Si je supprime lacd
ligne de votre fonction et l'exécute, il n'y a pas de chemin dans ma ligne d'état ou dans la sortie deecho bufname('%')
Je me demande si c'est peut-être un problème avec votre ligne d'état plutôt que le nom du tampon. Quelle est votre'statusline'
option?statusline
d'utiliser quelque chose commeexpand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, mais je pense que nous sommes maintenant dans le domaine des préférences personnelles. Si vous décidez de vous en tenir à la solution de changement de répertoire, il peut être préférable d'utiliser:lcd
pour limiter les modifications à la fenêtre en question, mais encore une fois, cela dépend de vous. Quoi qu'il en soit, je pense que c'est une excellente réponse. +1!