Criar um novo arquivo no diretório do arquivo aberto no vim?


95

Encontro-me na posição em que desejo criar um novo arquivo no mesmo diretório em que o arquivo aberto está. Como faço para criar um novo arquivo no diretório do arquivo aberto no vim? Além disso, existe um lugar onde posso aprender essas coisas sozinho? Googling não ajudou.


Você está falando sobre o vim, o editor de texto no Linux?
ianaz

Respostas:


178

De dentro do Vim, novos arquivos são criados como os arquivos existentes são editados, por meio de comandos como :edit filenameou :split filename. Para persisti-los no disco, você precisa (opcionalmente digitar o conteúdo e) persisti-los por meio de :write.

Como um prompt de comando, o Vim tem uma noção do diretório atual ( :pwdlista-o). Todos os caminhos de arquivo são relativos a ele. Você não precisa duplicar o caminho para o arquivo atual, existem alguns atalhos interessantes para eles: %refere-se ao arquivo atual, :hé um modificador para seu diretório, menos o nome do arquivo (cp. :help filename-modifiers). Então,

:e %:h/filename
:w

irá criar um novo arquivo nomeado filenameno mesmo diretório do arquivo aberto atualmente e gravá-lo.

Como alternativa, algumas pessoas gostam do Vim para sempre mudar para o diretório do arquivo atual. Isso pode ser configurado colocando

:set autochdir

em seu ~/.vimrcarquivo (que é lido na inicialização do Vim). Então, acima se torna simplesmente

:e filename
:w

Finalmente, o Vim tem um ótimo built-in :help. Aprenda a navegar e pesquisar!


2
autochdiré esquisito, infelizmente, e descobri que não podia depender disso. Em vez disso, coloquei um autocmd em meu vimrc:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang

1
Dawg gostaria de votar sua resposta também, mas Dawg não tem o representante necessário. Obrigado pela explicação bem escrita!
Dawg

16

você deve tentar o plugin "nerdtree". Na janela nerdtree, você digitou a tecla m, e as opções de operação do arquivo serão exibidas para você


12

Se quiser criar um novo arquivo e também mostrá-lo na janela ao lado do arquivo atual, você pode tentar o seguinte:

:vsp newfile

O vspsignifica vertical split, e divide a tela ao meio, um mostrando seu arquivo atual, o outro mostrando seu novo arquivo (também funciona com apenas sp, que é uma divisão horizontal).

De acordo com o comentário de @MartinLyne acima, isso criará o arquivo no diretório do arquivo no qual você abriu vim. Para ajustar isso, você pode alterar o diretório de trabalho atual da seguinte maneira:

:cd %:p:h

Este comando altera o diretório de trabalho atual para o diretório do arquivo ativo, o que significa que a execução do vspcomando (ou qualquer um dos comandos acima) criará o arquivo nesse diretório.


2

Quando você abriu o vim em um local inexistente como $ vim /etc/<some_folder/<next_folder>/file.cfg

em seguida, para criar um novo diretório enquanto está dentro do vim, execute no modo normal :! mkdir -p /etc/<some_folder/<next_folder>e salve seu documento normalmente :w :x ZZ(o que você quiser)

é isso aí


1

Isso é pelo Gvim! Digite aqui para ver o diretório atual.

:cd

então mude com

:cd desktop/somefolder

então salve ou crie um novo arquivo lá

:enew asd.cpp

agora novamente veja o arquivo

:cd

0

Estou muito atrasado para a festa, mas outra opção é abrir o NERDtree com :Eou :Explore(ou suas alternativas de divisão :Vexplore/ :Sexplore== :Vex/ :Sex).

No NerdTree você pode criar um novo arquivo com %e digitar o nome. Ele abrirá automaticamente o arquivo e o criará após você :w/ salvá-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.