Edytuj jeden plik w dwóch różnych buforach w emacsie
28
Chciałbym otworzyć plik foo.bardwa razy (lub więcej) w emacsie, aby móc jednocześnie edytować dwie różne części. Czy to możliwe? Prawdopodobnie lepszym pytaniem jest, jak to zrobić? Czy istnieje sposób otwarcia każdej instancji we własnym buforze / ramce?
Możesz otworzyć ten sam bufor w więcej niż jednym oknie (które można rozdzielić między różne ramki), ale nie jest to zbyt wygodne. Każde okno ma swój punkt, ale wszystkie mają wspólny znak, tryb pliku, zwężenie i inne cechy, ponieważ poza punktem prawie wszystkie cechy są powiązane z buforem. Ponadto, jeśli zdarzy ci się odwiedzić inny bufor w jednym oknie, stracisz swoje miejsce w pliku.
Możesz utworzyć bufor pośredni, który ma swój własny punkt, znak, tryby i tak dalej, ale taką samą zawartość jak oryginalny bufor (i zapisywanie jednego z buforów zapisuje w tym samym pliku). Aby utworzyć drugi bufor, który jest klonem bieżącego bufora, uruchom M-x clone-indirect-buffer RET. Aby otworzyć ten drugi bufor w innym oknie, możesz wpisać C-x 4 c.
Aby wyjaśnić: C-x 4 cdziała clone-indirect-buffer-other-window, więc byłoby to użyte zamiast clone-indirect-buffer, nie wykonując tego polecenia. Jednak w moim systemie oba te polecenia wydają się robić to samo.
@pedz C-x 4jest prefiksem dla systemu Windows, cjest dla klonowania . Jeśli chcesz, możesz zdefiniować inne powiązania. C-x cnie jest używany w domyślnej konfiguracji, możesz go użyć, jeśli nie boisz się C-x C-czamiast tego przypadkowo uderzyć . Definiuję C-x 5 cklonowanie w nowej ramce w moim pliku init.
Tryb podzielonego ekranu: gdzie ctrl+ xoznacza naciśnij i przytrzymaj klawisz Ctrl i wpisz x. Następnie wpisz następujący numer.
ctrl+ x2 (podział poziomy)
lub
ctrl+ x3 (podział pionowy)
Następnie możesz przewijać je niezależnie w tym samym pliku lub otworzyć inny bufor, jeśli chcesz w jednym z nich.
Aby powrócić do jednego typu widoku
ctrl+ x1
Jeśli chcesz, możesz podzielić każdy ekran (sekcję) tyle razy, ile potrzeba. Wybierz najpierw ekran, który chcesz podzielić, a następnie wykonaj na nim podział poziomy lub pionowy.
Yikes! Czy nie należy dołączać nawigacji między ramkami za pomocą klawiatury? C-x obiegnie other-windowi przechodzi przez widoczne „okna” w każdej „ramce”. (Korzystanie z konfiguracji emacsa, w której okna menedżera okien nazywane są ramkami, a oddzielne panele w nich nazywane są oknami (wiem, wiem, ale nie jestem za to odpowiedzialny).)
Emacs jest tendencyjny do paneli (okien), a nie ramek. Często pożądane jest otwarcie tego samego bufora w innej ramce, a nie tylko innego okna w tej samej ramce. Ale C-x 5 cdomyślnie nie jest związany. Ten kod definiuje brakującą clone-indirect-buffer-other-framefunkcję:
(global-set-key [?\C-x ?5 ?c]
'(lambda(newname display-flag)
"Like `clone-indirect-buffer-other-window' but display in another frame."
(interactive
(progn
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg
(read-buffer "Name of indirect buffer: " (current-buffer))) t)))
(save-window-excursion
(let ((newbuf (clone-indirect-buffer newname display-flag)))
(switch-to-buffer-other-frame newbuf)
)
)
)
)
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.