Odpowiedzi:
Prawdopodobnie jest to bufor scratch, który można nazwać. Z pomocy:
zadraśnięcie
Zawiera tekst, który można w dowolnym momencie usunąć. Zachowuje się go podczas zamykania okna, należy je jawnie usunąć. Ustawienia:>
: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.
Można to znaleźć w :help special-buffers.
:editpliku do edycji pliku, automatycznie tworzony jest nowy bufor. Pusta bufor może być utworzony przez wejściem :enewi :newlub :vnew. Z bufora Vima FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratchgo jako jeden z 10 (w mojej instalacji) wyników.
Pamiętam wskazówkę vima (która została migrowana do vim.wikia) na ten temat.
Najnowsza wersja funkcji, której używam do tworzenia buforów scratch, ustawia również:
'buflisted' do fałszu'readonly'(Z mojej wtyczki biblioteki 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
Bufor „scratch” to tylko nieformalne określenie miejsca, w którym można wpisać dowolną treść tymczasową.
Po zaakceptowaniu odpowiedzi i kolejnym pytaniu utworzyłem następującą funkcję w moim vimrc.
Funkcja tworzy pusty bufor w bieżącym oknie i nazywa go „scratch”. Bufor scratch nie jest chroniony, jeśli spróbujesz wyjść. Zostanie odrzucony bez monitowania nawet przy niezapisanych zmianach, jeśli zamkniesz Vima lub go wyczyścisz ( :bw).
Umieść tę funkcję w swoim vimrc. Aby utworzyć bufor scratch, użyj :call Scratch().
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
Możesz to szybko przetestować, szarpiąc linie, a następnie :@". Następnie możesz spróbować :call Scratch().
Podział jest używany, więc podczas tworzenia bufora scratch nie ma to wpływu na bieżący bufor.
(Jeśli wolisz pominąć tę splitfunkcję, wówczas twój bufor byłby „ukryty” (nie ma go już w oknie) podczas tworzenia bufora scratch. Vim nadal się zatrzymuje i pyta, czy spróbujesz wyjść z niezapisanymi zmianami w tym bufor).
Bufor scratch normalnie miałby ten sam katalog roboczy, co bufor, w którym wywoływana jest funkcja Scratch. Dodałem komentarz, aby zmienić katalog roboczy bufora scratch na home. Dotyczy to osób ze śmiesznymi wierszami stanu, które mogą wyświetlać ścieżkę bieżącego katalogu jako ścieżkę bufora. Lub tylko dla tych, którzy wolą.
Możesz ustawić bufor scratch na „wymieniony” lub „niepubliczny” (domyślnie wymieniony). Jeśli uczynisz go niepublicznym, nie zobaczysz go na :buffersliście, ale będzie :buffers!. Usuń komentarz z nobuflistedlinii, jeśli wolisz, aby nie była na liście. Zarówno na liście, jak i na liście, możesz zawsze zmienić bufor na scratch :b scratch. Podanie wymienionego bufora scratch czyni go nieco bardziej dostępnym. Na przykład :sballuwzględni to w podziale.
Jeśli użyjesz :bw(czyszczenie bufora) w buforze scratch, Vim usunie zawartość i usunie bufor bez ostrzeżenia. Jeśli użyjesz :bd(usuń bufor) w buforze scratch, Vim upuści zawartość bez ostrzeżenia i sprawi, że bufor nie będzie na liście.
Państwo może utworzyć wiele buforów zera. Vim zaczyna narzekać, ale wciąż masz dodatkowe.
buftype=hide przed ustawieniem nazwy, zmiana katalogu nie jest konieczna, ponieważ nazwa bufora nie będzie „obsługiwana jak nazwa pliku”. Warto również wspomnieć 'nobuflisted', co zapobiega wyświetlaniu bufora na wyjściu :ls. Nawiązałeś do niej trochę, ale nie wspomniałeś o tym wprost.
buftype=hideto jest bzdura i tak, tak naprawdę to mówiłem buftype=nofile:). Ale nie mogę odtworzyć opisanego zachowania i nadal uważam, że stwierdzenie Vim buffer names are always filenamesjest nieprawidłowe. Jeśli cdusunę wiersz z twojej funkcji, a następnie uruchomię go, nie będzie ścieżki w mojej linii statusu lub w wynikach. echo bufname('%')Zastanawiam się, czy może to jest problem z twoją linią statusu, a nie nazwą bufora. Jaka jest twoja 'statusline'opcja?
statuslineużyć czegoś takiego expand(&buftype == 'nofile' ? '%' : '%:p:~:h'), ale myślę, że teraz jesteśmy w sferze osobistych preferencji. Jeśli zdecydujesz się pozostać przy rozwiązaniu z katalogiem zmian, lepiej użyć :lcdograniczenia do danego okna, ale to zależy od ciebie. W każdym razie myślę, że to świetna odpowiedź. +1!
:hpolecenie wykorzystało dostęp do tej pomocy?