Comment puis-je supprimer du disque le fichier ouvert en cours depuis vim ? Ce serait bien de pouvoir également fermer le tampon.
Je te vois. vous pouvez utiliser NERDTree pour cela mais je n'utilise pas ce plugin.
Comment puis-je supprimer du disque le fichier ouvert en cours depuis vim ? Ce serait bien de pouvoir également fermer le tampon.
Je te vois. vous pouvez utiliser NERDTree pour cela mais je n'utilise pas ce plugin.
En utilisant un outil externe tel que rm (1) est bien, mais Vim a aussi sa propre delete()
pour supprimer des fichiers. Il présente l'avantage d'être portable.
:call delete(expand('%'))
Une autre façon d'exprimer cela est :call delete(@%)
qui utilise le %
(fichier courant) registre (astuce de @accolade).
Pour purger complètement le tampon actuel, à la fois la représentation du fichier sur le disque et le tampon de Vim, ajoutez :bdelete
:
:call delete(expand('%')) | bdelete!
Vous voudrez sans doute modifier cette carte en fonction de vos préférences.
Merci ! La carte suivante dans le fichier .vimrc semble fonctionner : nnoremap rm :call delete(expand('%')) \| bdelete!<CR>
. Vous pourriez ajouter dans votre réponse.
Cette cartographie n'est pas idéale. Nous ne voulons pas casser le r
commande ! Mieux vaut préfixer votre cartographie avec <Leader>...
.
N'est pas idéal, même parce qu'il est facile de supprimer le fichier et de fermer le tampon sans intention ! Mais je n'en avais besoin que comme solution temporaire.
Jetez un coup d'œil à Supprimer des fichiers avec une commande Vim . Le site Commentaires La section devrait avoir ce que vous cherchez :
En gros, Rm supprimera le fichier actuel ; RM supprimera le fichier actuel et quittera le tampon (sans sauvegarder) en une seule fois.
Sinon, vous pouvez simplement lancer une commande shell pour supprimer le fichier en cours :
:!rm %
C'est quelque chose de si simple que je n'arrive presque pas à croire que je doive créer un script pour cela. Merci.
Suppression avec !rm %
Est-ce qu'il y a un moyen d'éviter l'avertissement lorsque vim revient à la mémoire tampon ?
Avec certains caractères spéciaux dans le nom du fichier, cette commande ne fonctionnera pas, par exemple si le nom du fichier est 20130711-contacts #285.vcf, qui contient un espace, le message suivant apparaîtra : 'rm : cannot remove `20130711-contacts' : No such file or directory'
Parfois, un plugin peut être une solution intéressante même pour un problème simple. Dans ce cas, nous avons de la chance car il existe eunuque.vim par le tout-puissant Tim Pope.
Selon ses propres termes eunuque.vim fournit
Le sucre de Vim pour les commandes du shell UNIX qui en ont le plus besoin. Supprimer ou renommer un tampon et le fichier sous-jacent en même temps. Chargez un
find
ou unlocate
dans la liste des corrections rapides. Et ainsi de suite.
Parfait. Il a tout ce dont nous avons besoin, plus quelques outils supplémentaires si nous sommes sur un système UNIX.
La commande que vous recherchez est
:Remove!
Encore une fois, remappez-la si vous en avez souvent besoin, par ex. :nnoremap <Leader>rm :Remove!<CR>
.
J'aime pouvoir supprimer des fichiers à partir de vim, mais je suis également paranoïaque à l'idée de supprimer accidentellement un travail important qui, pour une raison ou une autre, n'est pas encore sous contrôle de version. Je trouve qu'il est utile de combiner les informations précédentes de @glts et @accolade avec cette réponse sur la façon d'utiliser le confirm
à l'invite avant de quitter vim.
En combinant ces éléments, j'ai ajouté une fonction à mon fichier ~/.vimrc
qui vous invite à supprimer le fichier et à fermer le tampon, et l'a associé à une combinaison de touches :
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()
fun! DeleteFileAndCloseBuffer()
let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun
Si vous êtes un peu moins paranoïaque que moi, vous pouvez ajouter <CR>
à la première ligne
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
et n'avoir à appuyer qu'une seule fois sur la touche retour.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.