Às vezes, vejo uma janela aberta com o nome scratch
.
Eu sei que é algum tipo de buffer / janela temporário.
Como posso criar um?
:h scratch
não retorna nada.
buffers
vim-windows
wizzup
fonte
fonte
:h
comando usado para acessar esta ajuda?:edit
arquivo para editar um arquivo, um novo buffer será criado automaticamente. Um buffer vazio pode ser criado digitando:enew
ou:new
ou:vnew
. Do FAQ do buffer do Vim: vim.fandom.com/wiki/Vim_buffer_FAQ:helpgrep scratch
o exibe como um dos 10 (na minha instalação) resultados.Lembro-me de uma dica do vim (que foi migrada para o vim.wikia) sobre o assunto.
A versão mais recente da função que eu uso para criar buffers de rascunho também define:
'buflisted'
para falso'readonly'
(No meu plugin da biblioteca VimL: lh-vim-lib)
fonte
Um buffer temporário é apenas um termo informal para um local digitar conteúdo temporário arbitrário.
Após a resposta aceita e outra pergunta, criei a seguinte função no meu vimrc.
A função cria um buffer em branco na janela atual e o denomina 'zero'. O buffer temporário não está protegido se você tentar sair. Ele será descartado sem avisar, mesmo com alterações não salvas, se você sair do Vim ou limpá-lo (
:bw
).Coloque esta função no seu vimrc. Para criar um buffer temporário, use
:call Scratch()
.Você pode testar isso rapidamente, puxando as linhas e depois
:@"
. Você pode tentar:call Scratch()
.Uma divisão é usada para que seu buffer atual não seja afetado quando você cria o buffer temporário.
(Se você preferir omitir a
split
função from, seu buffer atual ficará "oculto" (não está mais em uma janela) ao criar o buffer de rascunho. O Vim ainda será interrompido e perguntará se você tentar sair com alterações não salvas nesse amortecedor).O buffer temporário normalmente teria o mesmo diretório de trabalho do buffer em que você se encontra quando chama a função Scratch. Incluí uma linha comentada para alterar o diretório de trabalho do buffer temporário para home. É para aqueles com linhas de status engraçadas que podem exibir o caminho do diretório atual como o caminho do buffer. Ou apenas para quem prefere.
Você pode definir o buffer temporário como "listado" ou "não listado" (listado por padrão). Se você torná-lo não listado você não vai vê-lo em sua
:buffers
lista, mas será em:buffers!
. Descomente anobuflisted
linha se preferir que não esteja na lista. Listado ou não, você sempre pode alterar para seu buffer temporário de:b scratch
qualquer maneira. Tornar o buffer temporário listado o torna um pouco mais acessível. Por exemplo:sball
, incluirá em uma divisão.Se você usar
:bw
(limpeza do buffer) no buffer temporário, o Vim excluirá o conteúdo e removerá o buffer sem aviso. Se você usar:bd
(exclusão do buffer) no buffer temporário, o Vim eliminará o conteúdo sem aviso e tornará o buffer não listado.Você pode criar vários buffers de rascunho. O Vim começa a reclamar, mas você ainda acaba com outros.
fonte
buftype=hide
antes de definir o nome, não será necessário alterar o diretório, porque o nome do buffer não será "tratado como um nome de arquivo". Além disso, vale a pena mencionar'nobuflisted'
, o que impede que o buffer apareça na saída de:ls
. Você meio que aludiu, mas não o mencionou explicitamente.buftype=hide
é realmente um disparate, e sim, eu estava realmente falando sobrebuftype=nofile
:). Mas não consigo reproduzir o comportamento que você descreve e ainda acredito que a afirmaçãoVim buffer names are always filenames
está incorreta. Se eu remover acd
linha da sua função e executá-la, não há caminho na minha linha de status ou na saída deecho bufname('%')
Gostaria de saber se talvez esse seja um problema com sua linha de status e não com o nome do buffer. Qual é a sua'statusline'
opção definida?statusline
para usar algo comoexpand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, mas acho que agora estamos no reino da preferência pessoal. Se você optar por seguir a solução de diretório de alterações, talvez seja melhor usar:lcd
para limitar as alterações na janela em questão, mas novamente isso depende de você. De qualquer forma, acho que essa é uma ótima resposta. +1!