Eu perdi o comando: mv no Vim?

2

De vez em quando, quero renomear um arquivo ao editá-lo. Por exemplo, de .html a .xhtml ou mais.

Para fazer isso no Vim, devo fazer

:saveas new_file
:!rm old_file

Existe um comando interno que me permite livrar-me da parte :!rm ? É chato digitar novamente o caminho e o nome do arquivo antigos.

    
por Boldewyn 23.09.2010 / 16:13

5 respostas

3

Você sempre pode definir o seu próprio. Por exemplo, coloque isso no seu .vimrc:

" First define a function
function! MoveFunction(newname)
    " get the current file name
    let a:oldname = expand("%:p")
    " save under the new name
    exec "saveas " . a:newname 
    " delete the old file
    call delete(a:oldname) 
endfunction
" Next define a command
command! -nargs=1 MoveTo call MoveFunction(<f-args>)

então:

:MoveTo <new-name>

deve fazer o que quiser.

    
por 23.09.2010 / 18:44
8

Não, não há comando que renomeie o arquivo no disco e o buffer ao mesmo tempo. Existem algumas maneiras de reduzir a quantidade de digitação que você precisa fazer. Por exemplo, o Vim irá expandir% para o nome do atual buffer / arquivo, então você pode usar

:!mv % new_file

Se new_file tiver o mesmo nome de raiz de old_file, você poderá fazer isso para alterar apenas a extensão:

:!mv % %:r.xhtml

onde %:r se expande para o nome do buffer / arquivo atual sem a extensão. Veja

:help filename-modifiers

Depois de ter o nome do arquivo alterado no disco, você pode alterar seu buffer para esse nome com

:e new_file

ou

:f new_file

Ambos os comandos têm a conclusão do nome do arquivo, para que você possa digitar apenas as primeiras letras do nome do arquivo e, em seguida, < tab > para que o Vim complete o nome.

    
por 23.09.2010 / 17:40
1

Você pode usar apenas

:!mv old_file new_file

Você tem que salvar o buffer atual primeiro, btw!

    
por 23.09.2010 / 16:47
1

Há também o plug-in Rename.vim: link

    
por 06.10.2010 / 00:39
0

(agora?) Há também a função rename() , mas você terá que rastrear qualquer buffer apontando para o antigo nome do arquivo para aplicar um :filename .

    
por 16.10.2014 / 10:33

Tags