Est-il possible de renommer le fichier que je modifie depuis Vim? Actuellement, je quitte Vim, renomme le fichier et ouvre à nouveau Vim.
Est-il possible de renommer le fichier que je modifie depuis Vim? Actuellement, je quitte Vim, renomme le fichier et ouvre à nouveau Vim.
Réponses:
Vous pouvez enregistrer le fichier sous un nom différent en utilisant :w
. Mais cette opération ne supprime pas l'ancien fichier et le fichier "ancien" reste dans votre mémoire tampon. Toute modification sera donc appliquée à votre "ancien" fichier.
:saveas
enregistre votre nouveau fichier et l’ouvre dans un nouveau tampon. Mais cela ne supprime pas l'ancien fichier.
J'utilise tpope / vim-eneuch pour les :Move
fichiers.
: Move: Renomme un tampon et le fichier sur le disque simultanément.
:w
ou :saveas
est qu'il perdra l'autorisation d'exécution si vous éditez un script. netrw
Renommer conservera les autorisations.
Vous pouvez déposer sur Netrw et renommer le fichier ici.
Si le fichier que vous êtes en train de modifier se trouve dans le répertoire actuel, procédez comme suit:
:edit .
Accédez au fichier, appuyez sur Ret modifiez le nom. Appuyez sur Enterpour éditer le fichier.
Il y a cependant une mise en garde: le tampon d'origine reste dans la liste des tampons. Si vous passez à cela, il est vide.
Si le fichier que vous modifiez se trouve dans un autre répertoire, vous pouvez changer de répertoire avec:
:cd %:p:h
Si vous ne souhaitez pas modifier le répertoire pour la session entière de Vim mais uniquement pour le tampon actuel, vous pouvez alors effectuer les opérations suivantes:
:lcd %:p:h
:edit %:p:h
semble aussi fonctionner.
:E
ouvrira également netrw
J'utilise le plugin Rename2 pour cela depuis des années. Il renomme à la fois le tampon actuel et le fichier sur le disque:
:Rename {newname}
EDIT: J'ai trouvé ceci un .vimrc
fichier sur github :
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
Le meilleur moyen est d'utiliser :Move
, comme l'a dit OrangTux. Pour être complet, vous pouvez également exécuter des commandes de terminal dans les éditeurs vi en utilisant un bang ( !
) en mode commande.
:!mv {current_file} {new_name}
:e {new_name}
Cependant, cette méthode ne supprime pas l'ancien tampon de votre liste de tampons.