Respuestas:
Probablemente sea un búfer de memoria virtual, que se puede nombrar. De la ayuda:
rasguño
Contiene texto que se puede descartar en cualquier momento. Se mantiene al cerrar la ventana, debe eliminarse explícitamente. Configuraciones:>
: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.
Esto se puede encontrar en :help special-buffers
.
:edit
archivo para editar un archivo, se crea automáticamente un nuevo búfer. Se puede crear un búfer vacío ingresando :enew
o :new
o :vnew
. Desde Vim buffer FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratch
aparece como uno de los 10 resultados (en mi instalación).
Recuerdo una sugerencia de vim (que se ha migrado a vim.wikia) sobre el tema.
La última versión de la función que uso para crear buffers de memoria virtual también establece:
'buflisted'
a falso'readonly'
(Desde mi complemento de 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
Un búfer 'scratch' es solo un término informal para un lugar para escribir contenido temporal arbitrario.
Después de la respuesta aceptada y otra pregunta, creé la siguiente función en mi vimrc.
La función crea un búfer en blanco en la ventana actual y lo nombra 'scratch'. El búfer de memoria virtual no está protegido si intenta salir. Se descartará sin preguntar incluso con cambios no guardados si sale de Vim o lo borra ( :bw
).
Pon esta función en tu vimrc. Para crear un tampón de scratch use :call Scratch()
.
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
Puede probar esto rápidamente tirando de las líneas y luego :@"
. Entonces puedes intentarlo :call Scratch()
.
Se utiliza una división para que su búfer actual no se vea afectado cuando crea el búfer de memoria virtual.
(Si prefiere omitir el split
de la función, entonces su búfer actual estaría "oculto" (ya no en una ventana) cuando cree el búfer de memoria virtual. Vim aún se detendrá y le preguntará si intenta salir con cambios no guardados en ese buffer).
El búfer scratch normalmente tendría el mismo directorio de trabajo del búfer en el que se encuentra cuando llama a la función Scratch. He incluido una línea comentada para cambiar el directorio de trabajo del búfer de memoria virtual a inicio. Esto es para aquellos con líneas de estado divertidas que pueden mostrar la ruta del directorio actual como la ruta del búfer. O solo para aquellos que lo prefieren.
Puede configurar el búfer de memoria virtual como "listado" o "no listado" (listado de forma predeterminada). Si no lo :buffers
incluye en la lista, no lo verá en su lista, pero sí lo estará :buffers!
. Descomente la nobuflisted
línea si prefiere que no aparezca en la lista. En la lista o en la lista, siempre puede cambiar a su búfer de memoria virtual de :b scratch
todos modos. Hacer que el búfer de scratch aparezca en la lista lo hace un poco más accesible. Por ejemplo, :sball
lo incluirá en una división.
Si utiliza :bw
(limpieza de búfer) en el búfer de memoria virtual, Vim eliminará el contenido y eliminará el búfer sin previo aviso. Si usa :bd
(eliminar búfer) en el búfer de memoria virtual, Vim soltará el contenido sin previo aviso y dejará el búfer sin listar.
Usted puede crear varias memorias intermedias de rascar. Vim comienza a quejarse, pero aún así terminas con otros.
buftype=hide
antes de configurar el nombre, no es necesario cambiar el directorio, porque el nombre del búfer no se "manejará como un nombre de archivo". Además, vale la pena mencionar 'nobuflisted'
, lo que evita que el búfer se muestre en la salida de :ls
. Aludiste a eso, pero no lo mencionaste explícitamente.
buftype=hide
de hecho no tiene sentido, y sí, en realidad estaba hablando buftype=nofile
:). Pero no puedo reproducir el comportamiento que describe, y todavía creo que la afirmación Vim buffer names are always filenames
es incorrecta. Si elimino la cd
línea de su función y luego la ejecuto, no hay una ruta en mi línea de estado o en la salida de echo bufname('%')
Me pregunto si tal vez sea un problema con su línea de estado en lugar del nombre del búfer. ¿Cuál es su 'statusline'
opción establecida?
statusline
para usar algo como expand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, pero creo que ahora estamos en el ámbito de la preferencia personal. Si decide seguir con la solución de cambio de directorio, entonces podría ser mejor usar :lcd
para limitar los cambios a la ventana en cuestión, pero de nuevo eso depende de usted. De todos modos, creo que esta es una gran respuesta. +1!
:h
comando utilizado para acceder a esta ayuda?