Ok, więc w końcu dokonałem świetnej zmiany. W moim .zshenv zmieniłem edytora:
export EDITOR=vim
Mam kilka pytań, które są tak drobne, że nie chciałem zaczynać od nich osobnych pytań. Tutaj są:
Jak sprawić, aby zsh rozróżniał tryb wstawiania od trybu poleceń, tak jak w vimie? Najlepiej zmieniłoby to kursor z podkreślenia na blok jak w vimie, ale wyświetlanie tekstu na dole również by działało.
Jak sprawić, by działał bardziej jak vim? Na przykład wolę, aby domyślnie był w trybie poleceń i nie wychodził z niego po jednym poleceniu.
~
wstawianie postaci po wciśnięciuDelete
klawiszazsh
. Zadałem pytanie na ten temat tutaj: superuser.com/questions/997593/...Odpowiedzi:
1. ) (patrz http://zshwiki.org/home/examples/zlewidgets i http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/ ) :
Gdzie:
„RPS” oznacza „prawy ciąg zachęty” i określa monit pojawiający się po prawej stronie terminala, a składnia $ {zmienna / wzorzec / zamiennik} to „rozszerzenie parametrów”, patrz: http: // mywiki .wooledge.org / BashSheet # Parameter_Operations .
„zle -N” powoduje, że zdefiniowane przez użytkownika widżety „zle-line-init” i „zle-keymap-select” są powiązane (z funkcjami powłoki o tych samych nazwach), aby były wywoływane przy inicjowaniu edytora linii a mapa klawiszy jest odpowiednio zmieniana, patrz: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC125 .
2. ) Podejrzewam, że musisz do tego napisać inny widget zsh, zainspiruj się pierwszym z dwóch łączy pierwszego problemu.
źródło
Rozwiązanie akira ma następujący problem podczas korzystania z monitów wieloliniowych: przy przechodzeniu z trybu ins do trybu cmd przerysowanie monitu powoduje usunięcie kilku linii z poprzedniego wyniku (a nowy monit jest wyświetlany kilka linii powyżej). Ile wierszy zależy od liczby wierszy w wierszu polecenia.
Sposobem na poradzenie sobie z tym jest używanie
zle-line-finish
, bez korzystania zzle reset-prompt
niego. Przykład:Następnie możesz dodać go do wiersza polecenia, na przykład:
To jest prosto z mojego postu na blogu na ten temat:
źródło
zle-line-init
widżecie bezskutecznie. Zmieniono tak, aby pasowało do tego, co zapewnił Paweł i bingo!RPROMPT2
należy również ustawić, aby status był wyświetlany w liniach kontynuacji. Podczas korzystania z tego możesz chcieć to zrobićsetopt transient_rprompt
, aby tryby dla wcześniej zaakceptowanych linii nie były wyświetlane.bindkey -e
), nadal będzie widoczny[INS]
.te dwie linie upewniają się, że zaczyna się w trybie poleceń
źródło
Poniżej ustawisz zmodyfikowany kursor i monit wyświetlający, w jakim trybie jesteś. Możesz zmienić
DEFAULT_VI_MODE
na jedenviins
lubvicmd
. Po prostu wklej poniżej nowy,.zshrc
aby rozpocząć:Uwaga: testowałem to tylko w Terminal.app (2.7.3) na MacOS (10.12.6) z zsh (5.3.1). Ponadto, jeśli kiedykolwiek dodasz,
edit-command-line
tryb również zostanie poprawnie ustawiony.źródło