Иногда я вижу открытое окно с именем scratch
.
Я знаю, что это какой-то временный буфер / окно.
Как я могу ящик один?
:h scratch
ничего не возвращает
buffers
vim-windows
wizzup
источник
источник
:h
команда использовалась для доступа к этой справке?:edit
файл для редактирования файла, автоматически создается новый буфер. Пустой буфер можно создать, введя:enew
или:new
или:vnew
. Часто задаваемые вопросы из буфера Vim: vim.fandom.com/wiki/Vim_buffer_FAQ:helpgrep scratch
один из 10 (в моей установке) результатов.Я помню подсказку vim (которая была перенесена в vim.wikia) на эту тему.
Последняя версия функции, которую я использую для создания чистых буферов, также устанавливает:
'buflisted'
ложно'readonly'
(Из моего плагина библиотеки VimL: lh-vim-lib)
источник
«Чистый» буфер - это просто неофициальный термин, обозначающий место для ввода произвольного временного содержимого.
После принятого ответа и другого вопроса я создал следующую функцию в моем vimrc.
Функция создает пустой буфер в текущем окне и называет его «нуля». Чистый буфер не защищен, если вы попытаетесь выйти. Он будет удален без запроса даже с несохраненными изменениями, если вы выйдете из Vim или сотрете его (
:bw
).Поместите эту функцию в ваш vimrc. Для создания рабочего буфера используйте
:call Scratch()
.Вы можете проверить это быстро, дергая строки, а затем
:@"
. Вы можете попробовать:call Scratch()
.Разделение используется, чтобы ваш текущий буфер не затрагивался при создании чистого буфера.
(Если вы предпочитаете опускать
split
из функции, тогда ваш текущий буфер будет «скрыт» (больше не в окне), когда вы создаете чистый буфер. Vim все равно остановится и предложит вам, если вы попытаетесь выйти с несохраненными изменениями в этом буфер).Чистый буфер обычно имеет тот же рабочий каталог буфера, в котором вы находитесь, когда вызываете функцию Scratch. Я включил закомментированную строку, чтобы изменить рабочий каталог рабочего буфера на home. Это для тех, у кого смешные строки состояния, которые могут отображать путь к текущему каталогу в качестве пути к буферу. Или просто для тех, кто предпочитает это.
Вы можете установить рабочий буфер, чтобы он был «в списке» или «не в списке» (по умолчанию). Если вы сделаете это в
:buffers
списке, вы не увидите его в своем списке, но он будет в:buffers!
. Раскомментируйтеnobuflisted
строку, если вы предпочитаете, чтобы она не была в списке. В:b scratch
любом случае вы всегда можете перейти в свой рабочий буфер . Создание списка «чистых» буферов делает его немного более доступным. Например:sball
, включит его в разделение.Если вы используете
:bw
(очистка буфера) в чистом буфере, Vim удалит содержимое и удалит буфер без предупреждения. Если вы используете:bd
(удаление буфера) в чистом буфере, Vim удалит содержимое без предупреждения и сделает буфер не включенным в список.Вы можете создать несколько буферов нуля. Vim начинает жаловаться, но у вас все еще есть дополнительные.
источник
buftype=hide
перед установкой имени, то изменение каталога не требуется, потому что имя буфера не будет «обрабатываться как имя файла». Также стоит упомянуть'nobuflisted'
, что предотвращает отображение буфера на выходе:ls
. Вы как бы намекали на это, но не упоминали об этом явно.buftype=hide
это действительно ерунда, и да, я на самом деле говорил оbuftype=nofile
:). Но я не могу воспроизвести поведение, которое вы описываете, и все же считаю, что утверждениеVim buffer names are always filenames
неверно. Если я удаляюcd
строку из вашей функции и затем запускаю ее, в моей строке состояния или в выходных данных нет пути, иecho bufname('%')
я задаюсь вопросом: возможно, это проблема вашей строки состояния, а не имени буфера. Какая у вас'statusline'
опция?statusline
на что-то подобноеexpand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, но теперь я думаю, что мы находимся в сфере личных предпочтений. Если вы решите придерживаться решения для каталога изменений, то может быть лучше использовать его,:lcd
чтобы ограничить изменения рассматриваемым окном, но опять же, это ваше дело. Во всяком случае, я думаю, что это отличный ответ. +1!