Como devo renomear meu arquivo atual no Vim?
Por exemplo:
- Estou editando
person.html_erb_spec.rb
- Eu gostaria que fosse renomeado para
person.haml_spec.rb
- Eu gostaria de continuar editando
person.haml_spec.rb
Como eu faria isso com elegância?
Há um pequeno plugin que permite fazer isso.
Program Files (x86)
. Sempre que esse diretório precisar ser trabalhado, ele deverá ser colocado entre aspas. O que é muito.O comando é chamado
:saveas
, mas infelizmente não excluirá seu arquivo antigo, você precisará fazer isso manualmente. veja:help saveas
para mais informações.EDITAR:
A maioria das instalações do vim possui um gerenciador de arquivos integrado, que você pode usar para essas operações. Tente
:Explore
no modo de comando (eu na verdade mapeia isso para uma tecla de função, é muito útil). Você pode renomear arquivosR
ou excluí-los comD
, por exemplo. Mas pressionar<F1>
o explorer fornecerá uma visão geral melhor.fonte
Se você usa git e já possui o plugin fugitive.vim do tpope, basta:
Isso vai:
Se seu arquivo ainda não foi adicionado a um repositório git, adicione-o primeiro:
fonte
:Gmove
requer o caminho relativo para o novo nome do arquivo. Uma boa maneira de fazer isso é digitar o:Gmove <ctrl-r>%
que acrescenta o caminho / nome do arquivo atual.Estou fazendo isso com o plugin NERDTree:
então aperte m
Para renomear, você pode escolher
(m)ove the current node
e alterar o nome do arquivo. Também existem opções como excluir, copiar, mover, etc ...fonte
:w newname
- para criar uma cópia.:e#
.:!rm oldname
.No Windows, a 3ª etapa opcional muda um pouco:
:!del oldname
.fonte
:f newname
2) salvar:w
3) (opcionalmente)!rm oldname
. A vantagem é que seu histórico de desfazer é preservado.:saveas
é melhor nesse sentido, @rampion - e faz o que @kynan escreveu.Se o arquivo já estiver salvo:
Exemplo:
Requisitos de permissão:
Salvar como:
Para Windows não verificado
fonte
Eu recomendaria
:Rename
do eunuco do tpope para isso.Ele também inclui vários outros comandos úteis.
O comando Renomear está definido da seguinte forma no momento (verifique o repositório para ver se há atualizações!):
fonte
Você também pode fazer isso usando o netrw
O comando explore abre netrw no diretório do arquivo aberto
Mova o cursor sobre o arquivo que deseja renomear:
Digite o novo nome, pressione enter, pressione y.
fonte
Curto, seguro, sem plug-in:
control+ R, #será expandido instantaneamente para um arquivo alternativo (caminho editado anteriormente na janela atual) antes de pressionar Enter. Isso nos permite revisar o que exatamente vamos excluir. O uso de canos
|
nesse caso não é seguro, porque, sesav
por algum motivo falhar,#
ainda apontará para outro local (ou para nada). Isso significa!rm #
oudelete(expand(#))
pode excluir um arquivo completamente diferente! Faça-o manualmente com cuidado ou use um bom script (eles são mencionados em muitas respostas aqui).Educacional
... ou tente criar uma função / comando / script você mesmo. Comece de sth simple como:
após o vimrc recarregar, basta digitar
:Rename new_filename
. Qual é o problema com este comando?Teste de segurança 1: O que faz
:Rename
sem argumento?Sim, ele exclui o arquivo oculto em '#'!
Solução: você pode usar, por exemplo. condições ou
try
declaração como essa:Teste de segurança 1:
:Rename
(sem argumento) gera um erro:Teste de segurança 2: E se o nome for o mesmo que o anterior?
Teste de segurança 3: E se o arquivo estiver em um local diferente do seu real?
Conserte você mesmo. Para facilitar a leitura, você pode escrevê-lo desta maneira:
notas
!rm #
é melhor que!rm old_name
-> você não precisa se lembrar do nome antigo!rm <C-R>#
é melhor do que!rm #
quando fazê-lo manualmente -> você verá o que realmente remove (motivo de segurança)!rm
geralmente não é muito seguro ...mv
para um local de lixo é melhorcall delete(expand('#'))
é melhor do que o comando shell (OS agnóstico), mas mais tempo para escrever e impossível de usar control+Rtry | code1 | code2 | tryend
-> quando ocorrer um erro enquanto o código1, não execute o código2:sav
(ou:saveas
) é equivalente a:f new_name | w
- consulte file_f - e preserva o histórico de desfazerexpand('%:p')
fornece o caminho completo da sua localização (%
) ou da localização do arquivo alternativo (#
)fonte
fonte
call delete(expand('#'))
Há uma função no .vimrc de Gary Bernhardt que lida com isso.
fonte
Registrar
%
contém o nome do arquivo atual.'%:h'
mostra o diretório 'head' que contém o arquivo atual, por exemplo:%:h
retorna/abc/def
quando o caminho completo do arquivo éabc/dev/my.txt
fonte
Que tal isso (aprimorado pela sugestão de Jake):
fonte
:exe "!mv % newfilename" | e newfilename
O Vim tem uma
rename
função, mas infelizmente não retém a história.A maneira mais fácil e independente de OS de renomear um arquivo sem perder o histórico seria:
expand('#:p')
retorna o caminho completo do arquivo mais antigo.Use
:bd #
se você também deseja excluir o arquivo mais antigo da lista de buffers.Ou crie um plugin
Se você deseja usar um comando rápido para renomear o arquivo, adicione um novo arquivo em ~ / .vim / plugin com o seguinte conteúdo:
O comando
Rename
ajudará você a renomear rapidamente um arquivo.fonte
Existe um plugin bem maior chamado vim-eunuch, de Tim Pope, que inclui uma função de renomeação e outras guloseimas (excluir, encontrar, salvar tudo, chmod, sudo edit, ...).
Para renomear um arquivo no vim-eunuch:
:Move filename.ext
Comparado com rename.vim:
:rename[!] filename.ext
Salva algumas teclas :)
fonte
Para renomear arquivos existentes sem usar plug-ins, você deve usar o comando
Este comando permite explorar arquivos no diretório, excluí-los ou renomeá-los. você deve navegar para o arquivo necessário no
R
comando explorer than type, que permitirá que você renomeie o nome do arquivofonte
Não sei se esse é o método "mais fácil", mas, assumindo que você já salvou seu arquivo (: w), invocaria o shell (: sh) e faria um simples cp foo foo.bak Para voltar ao editor use Ctrl-D / Sair. Lista útil de comandos do editor vi neste link
fonte
Você também pode usar: f seguido por: w
fonte
Esse pequeno script não é perfeito (o retorno de carro extra que você precisa pressionar), mas faz o trabalho.
fonte
Outra maneira é usar o netrw, que é uma parte nativa do vim.
Depois, há opções para excluir, renomear etc.
Aqui está um mapa de teclas para abrir o netrw na pasta do arquivo que você está editando:
fonte
:sav newfile | !rm #
Observe que ele não remove o arquivo antigo da lista de buffers. Se isso é importante para você, você pode usar o seguinte:
:sav newfile | bd# | !rm #
fonte