Czasami widzę okno otwarte z nazwą scratch
.
Wiem, że to jakiś tymczasowy bufor / okno.
Jak mogę stworzyć skrzynkę?
:h scratch
nic nie zwraca.
buffers
vim-windows
wizzup
źródło
źródło
:h
polecenie wykorzystało dostęp do tej pomocy?:edit
pliku do edycji pliku, automatycznie tworzony jest nowy bufor. Pusta bufor może być utworzony przez wejściem:enew
i:new
lub:vnew
. Z bufora Vima FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ:helpgrep scratch
go 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)
źródło
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()
.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ę
split
funkcję, 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
:buffers
liście, ale będzie:buffers!
. Usuń komentarz znobuflisted
linii, 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:sball
uwzglę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.
źródło
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=hide
to jest bzdura i tak, tak naprawdę to mówiłembuftype=nofile
:). Ale nie mogę odtworzyć opisanego zachowania i nadal uważam, że stwierdzenieVim buffer names are always filenames
jest nieprawidłowe. Jeślicd
usunę 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?statusline
użyć czegoś takiegoexpand(&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ć:lcd
ograniczenia do danego okna, ale to zależy od ciebie. W każdym razie myślę, że to świetna odpowiedź. +1!