W emacs, jak mogę zachować wiele plików jednocześnie?

10

W tej chwili używam C-xC-fdo otwierania nowego pliku, ale robi się to dość nużące.

Yazz.com
źródło
Jaki jest Twój cel? Czy otwierasz kilka plików jednocześnie? Lub zarządzanie wieloma już otwartymi plikami?
viam0Zah
A może chcesz zobaczyć wiele plików jednocześnie? Ponieważ Emacs utrzymuje wszystkie te pliki „otwarte” (w pewnym sensie są ładowane, ale nie są „otwarte” w sensie „deskryptor pliku jest otwarty”).
Jürgen A. Erhard
Chcę edytować kilka plików źródłowych programu
Yazz.com,
Przejdź przez to zanim użyjesz emacsa
przeskaluj

Odpowiedzi:

19

Kiedy ładujesz plik do Emacsa za pomocą find-file ( Ctrl-x Ctrl-fdomyślnie powiązany ), zostaje on umieszczony w „buforze”. Dopóki nie zabijesz bufora, pozostaje on w pamięci, nie musisz go ponownie ładować.

Dostęp do już załadowanych plików (buforów) można uzyskać za pomocą przełącznika na bufor (powiązany z Ctrl-x b). Naciśnij klawisze, a następnie wpisz nazwę bufora, na który chcesz się przełączyć (domyślnie jest to basename dla każdego załadowanego pliku).

Możesz także nacisnąć, Ctrl-x Ctrl-baby uzyskać listę aktualnie istniejących buforów. I kliknij dowolny bufor tam za pomocą myszy, aby przejść do niego (IIRC, rzadko używaj myszy z Emacsem ;-))

Możesz także podzielić ekran na dwie (lub więcej) części, aby zobaczyć różne pliki (bufory) Ctrl-x 2. Początkowo pokazuje to ten sam bufor dwukrotnie. Przełącz na inny bufor w jednym z okien, aby zobaczyć inny plik.

Jürgen A. Erhard
źródło
1
Cx 3 może być również użyty do podzielenia ekranu na dwa, Cx 0, aby pokazać tylko jeden bufor na raz.
Rémi
3

Cx bi Cx Cb są tym, czego chcesz. Rozważ też wypróbowanie iswitchb lub ido. Odkąd zacząłem używać tych, chciałbym, aby każdy używany program mógł przełączać tabulatory / okna / dokumenty tak szybko i wygodnie jak emacs. Często mam 50 plików lub więcej otwartych w emacsie, możesz szybko znaleźć ten, który chcesz za pomocą iswitchb lub ido.

Justin Smith
źródło
1

Ponadto, jeśli używasz graficznej wersji emacsa, możesz zrobić ctrl-x 5 b, aby otworzyć istniejący bufor w nowym oknie (zwanym ramką w emacs-speak) lub ctrl-x 5 f, aby załadować nowy plik w nowym oknie.

KeithB
źródło
1
cx 5b działa również w tty, ale przełączanie ramek jest denerwujące w trybie tty :)
Justin Smith
@Justin Thanks. Nigdy nie grałem z ramkami w tty. Czy jest korzyść z używania wielu buforów?
KeithB
Możesz używać ramek vs okien w taki sam sposób, w jaki używasz obszarów roboczych vs. okien w menedżerze okien systemu Linux - tj. do pracy na elisp kod ramka 1 ma dwa okna, jedno z plikiem informacyjnym dla elisp, drugie z ielm do interaktywnego wypróbowania kodu, ramka 2 ma tylko jedno okno z dowolnym edytowanym plikiem (dzięki czemu można uzyskać jak najwięcej widocznych wierszy jak to możliwe, nie jest podświetlony). Przy przyzwoitym kluczowaniu dla innej klatki może to być bardzo produktywne ustawienie, jeśli z jakiegoś powodu nie chcesz uruchamiać X.
Justin Smith
0

Możesz łatwo otwierać wiele plików jednocześnie (lub działać na nich w inny sposób).

  1. Służy C-x ddo odwiedzania katalogu (folderu), który zawiera listę wszystkich jego plików i podkatalogów.

  2. Zaznacz pliki, które chcesz otworzyć (lub działać w inny sposób). Możesz oznaczać pliki pojedynczo lub w grupach na podstawie różnych cech, w tym wzorców nazw plików. Zobacz menu paska menu Mark i Regexp - pokazuje niektóre dostępne możliwości znakowania, a także skróty klawiaturowe.

Na przykład:

  • % m zaznacza pliki, których nazwy pasują do wyrażenia regularnego.

  • % g oznacza pliki, których zawartość jest zgodna z wyrażeniem regularnym.

  • * * oznacza pliki wykonywalne.

Aby otworzyć wszystkie zaznaczone pliki na raz, musisz załadować standardową bibliotekę dired-x.el. Zrób M-x load-library dired-xlub włóż (require 'dired-x)plik inicjujący.

Następnie możesz użyć F( dired-do-find-marked-files), aby odwiedzić wszystkie zaznaczone pliki jednocześnie. Użyj, C-x C-baby zobaczyć listę otwartych buforów, gdzie możesz wybierać spośród tych buforów plików.

Rysował
źródło