Jaki jest cel wymiany plików?

72

Kiedy edytuję pliki, Vim ma tendencję do tworzenia plików o nazwie , co wydaje mi się denerwujące. Z , widzę, że opcja pomija tworzenie plików wymiany..filename.swpvim -h-n

Czy istnieje dyrektywa vimrc, za pomocą której mogę domyślnie wyłączać pliki wymiany?

Jaki jest cel zamiany plików i jakiej funkcji nie byłoby możliwe, pomijając je?

200_sukces
źródło
FWIW, uważam też, że pliki wymiany są denerwujące i przez pewien czas próbowałem używać noswapfilezgodnie z sugestią poniżej. W końcu jednak poddałem się i wyłączyłem, ponieważ najwyraźniej korzyści przeważają nad irytacjami - buuuuuut, tak naprawdę nie pamiętam, co przekonało mnie do przywrócenia użycia pliku wymiany. Prawdopodobnie mój komputer się zawiesił i nie mogłem przywrócić niektórych utraconych plików, co byłoby trywialne przy włączonych plikach wymiany.
Kyle Strand

Odpowiedzi:

88

Powody wymiany plików

Pliki wymiany przechowują zmiany wprowadzone w buforze. Jeśli Vim lub komputer ulegnie awarii, pozwolą ci odzyskać te zmiany.

Pliki wymiany umożliwiają także uniknięcie edytowania tego samego pliku przez wiele instancji Vima. Może to być przydatne w systemach z wieloma użytkownikami lub po prostu wiedzieć, czy inny Vim już edytuje plik.

Wyłączanie plików wymiany

Jeśli chcesz całkowicie wyłączyć tworzenie plików wymiany (czego nie poleciłbym), możesz dodać set noswapfiledo swojego .vimrc. To ustawia globalną wartość opcji. Następnie możesz zastąpić to dla określonych buforów, używając :setlocal swapfilepodczas uruchamiania Vima.

Porządkowanie plików wymiany

Jeśli Twój problem dotyczy bardziej dodatkowych plików rozmieszczonych wokół systemu plików, możesz zebrać wszystkie pliki wymiany w jednym miejscu. Na przykład utwórz ~/.vim/tmpkatalog, a następnie dodaj

set directory^=$HOME/.vim/tmp//

do twojego .vimrc. 'directory'Opcja zawiera listę katalogów, które Vim użyje, aby spróbować zapisać plik wymiany.

^=Składnia :setpoprzedza nazwę katalogu na czele listy, więc Vim sprawdzi najpierw, że katalog.

Na //końcu nazwy katalogu mówi Vimowi, aby użył bezwzględnej ścieżki do pliku, aby utworzyć plik wymiany, aby nie było kolizji między plikami o tej samej nazwie z różnych katalogów.

Zauważ, że zapobiegnie to zauważeniu przez Vima, gdy wielu użytkowników próbuje edytować ten sam plik. Ponieważ plik wymiany nie znajduje się w tym samym katalogu co plik oryginalny, Vim drugiego użytkownika nie będzie wiedział o pliku wymiany i nie ostrzeże go, że jest już edytowany.

jamessan
źródło
4
Jaka jest korzyść z zamiany plików na trwałe-cofnij teraz, gdy jest w vimie od jakiegoś czasu?
alpha_989
Używam vim-auto-save. Czy to nie umniejsza potrzeby wymiany plików?
Kevin,
@Kevin To zależy. Jeśli wtyczka powoduje zapisywanie w każdym scenariuszu, że Vim wypisze plik wymiany, to prawdopodobnie. W przeciwnym razie nadal będą okresy, w których bufor nie zostanie zapisany, a plik wymiany może pomóc.
jamessan
@ alpha_989 Są komplementarne. Plik wymiany pozwala odzyskać niezapisane zmiany. Plik permanent-undo pozwala przeglądać historię cofania w sesjach Vima, ale plik jest zapisywany tylko podczas zapisywania.
jamessan
Jakaś metoda ustawiania vim no swap tylko dla jednej instancji? na przykład vim temp.txt --some-command-that-disable-swap? Mój przypadek użycia polega na tym, że jakiś obserwator będzie obserwował każdą zmianę w katalogu, więc dopiero wtedy chciałbym wyłączyć swap, aby zapobiec kolizji.
Ng Sek Long