Jestem użytkownikiem vima i dopiero niedawno zacząłem grać z zsh, aby móc używać trybu vi w powłoce (co nie jest praktyczne w bashie z powodu braku wstawienia/polecenia wskaźnik trybu). Po przeczytaniu niektórych przykładach skonfigurować następujące funkcje zaktualizować linię odpowiednio (Wybrałem colorscheme pasujące vim-powerline który ja również używać):zsh wyczyść RPS1 przed dodaniem linii do bufora liniowego
vim_ins_mode="%{$fg[white]%}%{$fg_bold[blue]$bg[white]%} INSERT %{$reset_color%}"
vim_cmd_mode="%{$fg[green]%}%{$fg_bold[black]$bg[green]%} COMMAND %{$reset_color%}"
vim_mode=$vim_ins_mode
function zle-line-init zle-keymap-select {
RPS1="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}"
RPS2=$RPS1
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
działa świetnie, tyle że jak biegnę więcej polecenia, RPS1 z poprzednich poleceń dostaje wyjście na ekran. Jak można sobie wyobrazić, posiadające wiele jasnych pól całym moim terminalu można uzyskać dość rozpraszające:
Mam nadzieję, że jakoś wyczyścić to pole zanim zostanie wyrzuconych do linebuffer jak poprzedniego polecenia, ale do tej pory ani przykłady ani motywów zsh patrzyłem na przeszkadzające robienie tego. W moim starym pliku .bashrc miałem konfigurację pułapki, aby zresetować kolorystykę mojego polecenia, aby nie wpłynął na kolor wyjściowy, zastanawiam się, czy coś podobnego byłoby możliwe tutaj? A może jest lepszy sposób z zsh?
Doskonały, dokładnie to czego chciałem i dużo czystszy niż bałagan z pułapkami –
@AlexanderTsepkov Zabawną rzeczą w tej opcji jest to, że zawsze miałem ją w '.zshrc'. Ale nie jest to domyślne, więc testowanie twojego kodu za pomocą 'zsh -f' ujawniło twoje zachowanie. I jest to jedna z małych udogodnień, których nie zauważysz, dopóki nie zostaną usunięte, więc nie udało mi się zapamiętać, że faktycznie mam żądane zachowanie bez powyższego kodu. – ZyX