2013-01-14 26 views
5

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: here is an example

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?

Odpowiedz

9

Wypróbuj poniższy kod:

function _-accept-line() 
{ 
    emulate -L zsh 
    local SAVEDRPS1="$RPS1" 
    RPS1="" 
    zle reset-prompt 
    RPS1="$SAVEDRPS1" 
    zle .accept-line 
} 
zle -N accept-line _-accept-line 

Zapomnij o tym kodzie. Zsh posiada opcję zachowania ma:

setopt transientrprompt 

Usunąć prawy wiersz z wyświetlaczem przyjmując linię poleceń. Może to być przydatne w przypadku terminali z innymi metodami cięcia/wklejania.

+0

Doskonały, dokładnie to czego chciałem i dużo czystszy niż bałagan z pułapkami –

+1

@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

Powiązane problemy