Aprendi essa dica assistindo Sean Griffin em Hands-On Backbone.js on Rails .
O erro
Edite um novo arquivo em um diretório que ainda não exista, como app/views/application
:
:e app/views/application/index.html.erb
Tente salvar o arquivo:
:x
Um erro será exibido:
"app/views/application/index.html.erb" E212: Can't open file for writing
Press ENTER or type command to continue
O erro significa que não foi possÃvel salvar o arquivo porque app/views/application
ele não existe. Então, temos que criá-lo.
Fazendo o diretório no shell
Eu costumava suspender o Vim:
Ctrl+Z
Em seguida, crie o diretório a partir do shell:
mkdir app/views/application
Em seguida, traga o Vim de volta ao primeiro plano:
fg
Fazendo o diretório no Vim
O que Sean faz no Hands-On Backbone.js on Rails é criar o diretório direto do Vim:
:!mkdir -p %:h
Muito mais rapido!
Como funciona
%
é o arquivo atual no Vim. é o diretório no qual o arquivo atual está localizado. Portanto, ao editar , o comando se expande para .%:h
app/views/application/index.html.erb
mkdir -p app/views/application
Bônus!
Para a abordagem mais rápida ainda, use vim-mkdir para criar automaticamente o diretório quando ele não existir, sem necessidade de intervenção manual.
Respostas relacionadas:
Comandos básicos do Vim – para começar