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.

Dawg
fonte
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!

Ingo Karkat
fonte
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ê

Harris
fonte
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.

RocketDonkey
fonte
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í

matson kepson
fonte
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
O Flash
fonte
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.

Mazunki
fonte