Jak uzyskać linię trybu bardziej zaawansowanego, która wykorzystuje jednolite kolory i trójkąty?


93

Ludzie czasami publikują zrzuty ekranu z modelinami o jednolitych kolorach i trójkątach: wprowadź opis zdjęcia tutaj

Jak mogę powtórzyć ten efekt?


2
Właściwie to pytanie zostało mi zadane kilka razy na innych stronach, więc pomyślałem, że też profilaktycznie zadam je tutaj :).
Tikhon Jelvis,

1
Zobacz także whattheemacsd.com/appearance.el-01.html, aby uzyskać wskazówki dotyczące zmiany tekstu, a nie tylko wyglądu linii trybu.
mankoff

Odpowiedzi:


78

Można to osiągnąć za pomocą dwóch pakietów:

  1. linia trybu inteligentnego .
  2. powerline .

Ogólnie rzecz biorąc, linia trybu inteligentnego jest bardziej wydajna niż linia energetyczna (wybacz pun), w tym sensie, że oferuje więcej funkcji kontrolujących zachowanie linii trybu i większą możliwość dostosowania wyglądu. Readme ma świetną listę funkcji , ale w skrócie oferuje kontrolę szerokości, zastępowanie ciągów w ścieżce pliku, ukrywanie między innymi mniejszych trybów.

  • Jeśli wszystko, czego chcesz, to zrzut ekranu, najlepszym wyborem jest powerline .
  • Jeśli chcesz połączyć zestaw innych funkcji z tym, wypróbuj linię smart-mode-line .

Ponieważ Powerline został bardzo dobrze wyjaśniony na innej odpowiedzi, skupię się na tym, jak możesz osiągnąć ten wygląd za pomocą linii trybu inteligentnego.

Pierwsza instalacja

Możesz zainstalować tryb smart-mode-line z Melpy, Melpa-Stable lub pobrać go ręcznie. Zakładając, że zdecydujesz się użyć menedżera pakietów, po prostu zrób

M-x package-install RET smart-mode-line

Gdy go włączysz M-x sml/setup, linia trybu powinna wyglądać podobnie do jednego z tych dwóch.
Zrzut ekranu Dark Theme Zrzut ekranu motywu światła

Motyw Powerline

smart-mode-line ma kilka wbudowanych motywów, ten, który osiąga pożądany wygląd, jest dostarczany osobno w themes/ katalogu. Pamiętaj, że ten motyw jest wciąż w fazie beta, więc jego dostosowanie może jeszcze nie działać idealnie.

Zainstaluj motyw z Melpy

M-x package-install RET smart-mode-line-powerline-theme

Jeśli chcesz zainstalować go ręcznie, jest tutaj , ale musisz również zainstalować Powerline.

Wreszcie możesz włączyć motyw za pomocą M-x sml/apply-theme RET powerline. Twój wiersz trybu powinien wyglądać następująco.
Zrzut ekranu motywu Powerline
Jak widać, kolejność elementów nie jest taka sama, ale ogólny wygląd jest tam.

Aby używać tego motywu za każdym razem, dodaj następujące elementy do pliku init. Możesz także dostosować dowolne zmienne konfiguracyjne linii energetycznej i powinny one mieć ten sam efekt tutaj.

;; These two lines are just examples
(setq powerline-arrow-shape 'curve)
(setq powerline-default-separator-dir '(right . left))
;; These two lines you really need.
(setq sml/theme 'powerline)
(sml/setup)

1
Pisałem też o linii trybu inteligentnego, ale z pewnością wyjaśniłeś to lepiej. Dziękuję Ci.
Boccaperta-IT,

3
Możesz także rozwinąć funkcje wyrażeń regularnych, w których ścieżkę można przedstawić za pomocą krótszego zestawu znaków ... :ED:zamiast ~/.emacs.d/i rich-minorityaby ukryć zapalniczki w trybie pomocniczym.
Kaushal Modi

1
@kaushalmodi opracował nieco.
Malabarba

46

Można to osiągnąć za pomocą pakietu o nazwie „powerline”. Dostępnych jest kilka wariantów, w tym przynajmniej jeden, przez który można zainstalować package.el.

Osobiście korzystam z tego . Oto zrzut ekranu z pliku README:

Przykład powerline.

Możesz skonfigurować kolor, ustawiając powierzchnię linii trybu:

(set-face-attribute 'mode-line nil
                    :foreground "Black"
                    :background "DarkOrange"
                    :box nil)

Możesz również skonfigurować różne kształty, a nie tylko trójkąty:

(setq powerline-arrow-shape 'curve)

Emacs powerline z krzywymi zamiast strzałek.


2
FWIW - Jeśli masz problem z tym, że kolory separatorów są całkowicie bez wyrazu, tak jak ja, znalazłem widelec Powerline, w którym możesz, (setq powerline-default-separator 'utf-8)który pozwala na użycie dowolnej z łatek Powerline tutaj .
waymondo

@ thepalmcivet: dobrze wiedzieć, ale nie jestem do końca jasne, co masz na myśli, mówiąc, że kolory są jednolite. Czy masz zrzut ekranu przedstawiający problem lub coś takiego? Dzięki!
Tikhon Jelvis

2
Nie ma problemu, oto co mam z (setq powerline-default-separator 'arrow). Instaluję Carbon Emacs z Homebrew z --srgbflagą i (setq ns-use-srgb-colorspace t)na .emacs.d.
waymondo

Tikhon, to jedna z twoich uroczych linii trybu. Czy możesz opublikować sekcję pełnego trybu trybu-linii, którą częściowo zrzuciłeś? Dzięki :-)
Ivan Vučica,

2
@ IvanVučica: Dzięki! Jest na GitHub, w dwóch częściach: zmodyfikowany powerline.el, który zawiera kilka kształtów do wyboru ( curvejest fajny, ale używam diagonalteraz) i mój .emacs , który ma kilka różnych ustawień, które gdzieś mam. Jeśli masz takie skłonności, możesz stworzyć własną kopię powerline.eli dodać własne kształty separatora za pomocą grafiki ASCII, aby uzyskać dokładnie taki efekt, jakiego potrzebujesz :).
Tikhon Jelvis

12

Jak wspomnieli inni, powerline to pakiet, który w ten sposób formatuje modelinę. Jednak większość motywów emacsa nie definiuje kolorów dla powerline (co nie jest świetne). Jednym z motywów jest kolorowy (i wszechstronny) motyw moe . Ma nawet tryb, który zmienia kolor wieczorem, aby był łatwiejszy dla oczu. To wygląda tak:

Motyw Moe we wspaniałym trybie magenta, motywując modelkę Powerline

Moje strzałki w linii energetycznej wyglądają dziwnie, ponieważ używam niepoprawnej wersji czcionki Luxi Mono.


1

Moje strzałki w linii energetycznej wyglądają dziwnie, ponieważ używam niepoprawnej wersji czcionki Luxi Mono.

William Roe , sądząc z twojego zrzutu ekranu, że jesteś na macOS. Jak stwierdzono w komentarzu do tego wydania , musisz go dodać

(setq powerline-image-apple-rgb t)

do twoich plików inicjujących. To powinno rozwiązać problem z kolorem za pomocą separatorów („strzałek”). Przynajmniej dla mnie pracował.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.