Szukałem polecenia, które, mam nadzieję, otworzy ulubiony edytor tekstu bieżącego użytkownika, ponieważ piszę kilka instrukcji z poleceniami na blogu. Spodziewałem się polecenia takiego jak edit
i znalazłem editor
. Dla mnie uruchomił Vima w terminalu, co jest bliskie Chciałem; używam vim-gtk. Zacząłem szukać sposobu, aby edytor używał vim-gtk i znalazłem to pytanie, które wyjaśnia $EDITOR
zmienną środowiskową, ale nie jestem pewien, czy jest to w ogóle związane z poleceniem editor
. Próbowałem man editor
, ale to właśnie spowodowało wyświetlenie strony podręcznika vima.
Jak mogę sprawić, by editor
używał wybranego przeze mnie edytora tekstu, czy powinienem używać innego polecenia?
Odpowiedź
To jest Debian-ism (i dlatego pojawia się w Ubuntu, Mint itp.). wywołanie łącza ed editor
. Możesz to prześledzić w następujący sposób:
$ which editor /usr/bin/editor $ ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor $ ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome $ ls -l /usr/bin/vim.gnome -rwxr-xr-x 1 root root 2403392 Oct 26 2012 /usr/bin/vim.gnome
Więc możesz zobaczyć, że editor
to tylko uniksowe łącze do plik wykonywalny vim.gnome
.
Używanie editor
?
Nie sądzę, żebym to zrobił idź w tym kierunku, aby skonfigurować editor
w jakikolwiek znaczący dla użytkowników sposób, biorąc pod uwagę, że nie jest to coś, co uważam za standard.
Dodatkowo możesz ustawić $EDITOR
zmienna środowiskowa wskazująca na cokolwiek chcesz, vim
, gedit
, emacs
itd. Jednak ta zmienna jest używana tylko przez inne narzędzia, takie jak sudo
, git
i subversion
, które są specjalnie zaprojektowane do powiązania ze zmienną $EDITOR
.
Pomysły na implementację
Po prostu skonfigurowałbym alias według własnego wyboru i albo poinstruował użytkowników, że jest on dostępny je za pomocą pliku $HOME/.bashrc
jako alias X lub skonfiguruj go jako konfigurację systemu w pliku /etc/profile.d/our_aliases.sh
, jako alias X.
Lub możesz po prostu powiedzieć użytkownikom, że systemy „zapewniają gedit
, gvim
, vim
, emacs
itp. i przeciąć powłokę cukrową i od razu nauczyć ich o tych rzeczach.
Lub możesz podać tekst plik o nazwie /etc/help.txt
, który można uruchomić za pomocą polecenia help
(alias help="less /etc/help.txt"
) w powłoce które zawierałyby podstawowe polecenia i sposoby wykonywania różnych zadań. Takie podejście umożliwia dostosowywanie pomocy w miarę upływu czasu dzięki nowym funkcjom lub wskazówkom i daje im więcej niż tylko wygodne polecenie editor
.
Komentarze
Odpowiedź
Edytor wywoływany przez niektóre programy, gdy każesz im edytować plik. Musisz samodzielnie ustawić zmienną środowiskową.
Jeśli używasz csh lub tcsh, po znaku zachęty powłoki:
setenv EDITOR vim
Jeśli używasz bash lub ksh, a następnie wpisz:
EDITOR=vim; export EDITOR
(Zastąp „vim” edytorem, którego chcesz użyć).
EDITOR
jest tą, której domyślnie potrzebujesz, aby niektóre aplikacje wywoływały edytor. Istnieje inna zmienna o nazwie VISUAL
, używana do określenia edytora ekranowego. Zwykle będziesz chciał ustawić tę samą wartość, co zmienna EDITOR
. Pierwotnie EDITOR
miałoby być ustawione na ed (edytor liniowy), a VISUAL
zostałoby ustawione na vi (ekran- oparty na edytorze).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Po wykonaniu tej czynności większość programów uniksowych, które używają edytorów tekstu, będzie używać ustawionego edytora. Wykonując powyższe polecenia ustawisz domyślny edytor tylko dla bieżącej sesji obliczeniowej. Aby te zmiany były trwałe, musisz umieścić odpowiednie polecenia opisane powyżej w swoim .login
lub .cshrc
(dla użytkowników csh lub tcsh) lub plik .profile
(jeśli używasz bash lub ksh).
Jest też inna zmienna środowiskowa, jeśli udajesz, że używasz Emacsa. Jest ALTERNATE_EDITOR
i ma ten sam efekt, ale jest używany, gdy wywoływany jest Emacs z opcją --alternate-editor
.
Opcja
--alternate-editor=command
jest przydatne podczas uruchamianiaemacsclient
w skrypcie. Określa polecenie do wykonania, jeśliemacsclient
nie skontaktuje się z Emacsem. Na przykład następujące ustawienie dla zmiennej środowiskowejEDITOR
zawsze daje edytorowi, nawet jeśli Emacs nie jest uruchomiony:EDITOR="emacsclient --alternate-editor vi +%d %s"
Komentarze
- Powiedzenie
sh
nie ' t ma sens.sh
jest zwykle powłoką systemu '. Kiedyś była to powłoka Thomson, potem powłoka Bournea, a obecnie w większości systemów taka czy inna powłoka implementująca specyfikację POSIXsh
. Składniaexport EDITOR=vim
jest zgodna z POSIX, ale nie Bourne ani Thomson.export VISUAL=$EDITOR
działa wbash
i niektórych implementacjachksh
. W większości innych powłok potrzebujeszexport VISUAL="$EDITOR"
.VISUAL=$EDITOR export VISUAL
będzie działać we wszystkich powłokach typu Bourne, w tym w powłoce Bournea. - Czy często i akceptowane jest ustawienie
EDITOR
do wartości składającej się z wielu słów? Jeśli tak, nie mogę bezpiecznie użyćwhich "$EDITOR"
lubwhich $EDITOR
, aby sprawdzić, czy jest obecny.
Odpowiedź
Będziesz musiał określić editor
w zmiennej środowiskowej EDITOR
. Dodaj następujące polecenie do swojego .profile
:
export EDITOR=editor
Jeśli chcesz vim
jako domyślny edytor dodasz zamiast tego
export EDITOR=vim
Osobiste preferencje: używam bezwzględnej nazwy ścieżki edytora w zmiennej środowiskowej. Na przykład
export EDITOR=/usr/bin/vim
Answer
Polecenie editor
jest specyficzne dla systemu Ubuntu. Nie jest przenośny ani nawet powszechny (poza Ubuntu). Polecenie jest również ustawiane dla całego systemu, a nie dla poszczególnych użytkowników. Działa to tak, że /usr/bin/editor
jest po prostu dowiązaniem symbolicznym do edytora w systemie. Jako taka jest taka sama dla wszystkich użytkowników.
Zmienna środowiskowa $EDITOR
jest dość standardowa. Jest używany przez wiele programów, które wymagają od użytkownika edycji. W związku z tym jest to ta zmienna, której należy używać, gdy chcesz wywołać edytor użytkownika.
Komentarze
- Nie jest specyficzna dla Ubuntu, pochodzi z Debiana i wykorzystuje mechanizm alternatyw Debiana '. ' jest dostępny we wszystkich pochodnych Debiana, nie tylko Ubuntu.
Odpowiedź
Oto, czego używam w moim skrypcie:
# Find a suitable text editor editor="$VISUAL" [ -z "$editor" ] && editor="$EDITOR" [ -z "$editor" ] && which editor >/dev/null && editor=editor [ -z "$editor" ] && which nano >/dev/null && editor=nano [ -z "$editor" ] && which vi >/dev/null && editor=vi [ -z "$editor" ] && editor=no_editor_found # Use the editor we found $editor "$filename"
Ostateczne wywołanie $editor
nie otoczyłem cudzysłowami, aby upewnić się, że powyższy przykład emacsclient zadziała.
Dlatego uważam, że ważne jest, aby zawsze ustawić jakąś wartość dla editor
, w przeciwnym razie ostatnia linia może przypadkowo wykonać $ filename . W moim przypadku wybrałem no_editor_found
, ale równie dobrze możesz użyj pico
lub ed
tam.
$EDITOR
, teraz ja nie może ' polegać na tym ani naeditor
linku symbolicznym.s/Ubuntu/Debian/g