Réponses:
Il s'agit probablement d'un tampon de travail, qui peut être nommé. De l'aide:
rayure
Contient du texte qui peut être supprimé à tout moment. Il est conservé lors de la fermeture de la fenêtre, il doit être supprimé explicitement. Paramètres:>
:setlocal buftype=nofile :setlocal bufhidden=hide :setlocal noswapfile The buffer name can be used to identify the buffer, if you give it a meaningful name.
Cela peut être trouvé dans :help special-buffers
.
: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)
function! lh#buffer#scratch(bname, where) abort
try
set modifiable
" The next function takes care of working around this damn E36
call lh#window#create_window_with(a:where.' sp '.escape(substitute(a:bname, '\*', '...', 'g'), '#%'))
catch /.*/
throw "Can't open a buffer named '".a:bname."'!"
endtry
setlocal bt=nofile bh=wipe nobl noswf ro
return bufnr('%')
endfunction
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()
.
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
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 la nobuflisted
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.
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 fait buftype=nofile
:). Mais je ne peux pas reproduire le comportement que vous décrivez, et je pense toujours que la déclaration Vim buffer names are always filenames
est incorrecte. Si je supprime la cd
ligne de votre fonction et l'exécute, il n'y a pas de chemin dans ma ligne d'état ou dans la sortie de echo 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 comme expand(&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!
:h
commande permet d'accéder à cette aide?