Respostas:
Provavelmente é um buffer temporário, que pode ser nomeado. Da ajuda:
coçar, arranhão
Contém texto que pode ser descartado a qualquer momento. É mantido ao fechar a janela, deve ser excluído explicitamente. Configurações:>
:setlocal buftype=nofile :setlocal bufhidden=hide :setlocal noswapfile The buffer name can be used to identify the buffer, if you give it a meaningful name.
Isso pode ser encontrado em :help special-buffers
.
: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)
function! lh#buffer#scratch(bname, where) abort
try
set modifiable
" The next function takes care of working around this damn E36
call lh#window#create_window_with(a:where.' sp '.escape(substitute(a:bname, '\*', '...', 'g'), '#%'))
catch /.*/
throw "Can't open a buffer named '".a:bname."'!"
endtry
setlocal bt=nofile bh=wipe nobl noswf ro
return bufnr('%')
endfunction
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()
.
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
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 a nobuflisted
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.
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 sobre buftype=nofile
:). Mas não consigo reproduzir o comportamento que você descreve e ainda acredito que a afirmação Vim buffer names are always filenames
está incorreta. Se eu remover a cd
linha da sua função e executá-la, não há caminho na minha linha de status ou na saída de echo 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 como expand(&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!
:h
comando usado para acessar esta ajuda?