/ / ZSH auto_vim (jak auto_cd) - zsh, zshrc

ZSH auto_vim (jak auto_cd) - zsh, zshrc

zsh ma funkcję (auto_cd), gdzie wystarczy wpisaćnazwa katalogu automatycznie przejdzie do (cd) tego katalogu. Jestem ciekawy, czy byłby sposób na skonfigurowanie zsh do zrobienia czegoś podobnego z nazwami plików, automatycznie otworzy pliki z vimem, jeśli napiszę tylko nazwę pliku?

Odpowiedzi:

3 dla odpowiedzi № 1

Są trzy możliwości, o których mogę pomyśleć. Pierwszy to aliasy sufiksów, które mogą automatycznie się tłumaczyć

% *.ps

do

% screen -d -m okular *.ps

po tym

alias -s ps="screen -d -m okular"

. Ale musisz zdefiniować ten alias dla każdego przyrostka pliku. Jest również przetwarzany przed większością ekspansji, więc jeśli

% *.p?

dopasowuje te same pliki co *.ps nic nie otworzy.

Drugi to handler command_not_found:

function command_not_found_handler()
{
emulate -L zsh
for file in $@ ; do test -e $file && xdg-open $file:A ; done
}

. Ale to nie działa dla ścieżek bezwzględnych lub względnych, tylko dla czegoś, co nie zawiera ukośników.

Trzeci to nadpisanie akceptora z hackem:

function xdg-open()
{
emulate -L zsh
for arg in $@ ; do
command xdg-open $arg
endfor
}
function _-accept-line()
{
emulate -L zsh
FILE="${(z)BUFFER[1]}"
whence $FILE &>/dev/null || BUFFER="xdg-open $BUFFER"
zle .accept-line
}
zle -N accept-line _-accept-line

. Powyższe zmienia historię (mogę pokazać, jak tego uniknąć) i jest raczej hackish. Dobrze, nie wyłącza sufiksów sufiksu (whence "*.ps" zwraca wartość aliasu), myślałem, że to robi. Wyłącza jednak autocd. Mogę tego uniknąć (po prostu || test -d $FILE po whence test), ale kto wie, jak wiele innych rzeczy ulega również uszkodzeniu. Jeśli wszystko w porządku, pierwsze i drugie rozwiązanie lepiej z nich korzystać.


0 dla odpowiedzi nr 2

Myślę, że możesz użyć "fasd_cd"który ma alias v, który używa pliku viminfo do plików identyfikacyjnych, które otworzyłeś co najmniej raz.W moim otoczeniu działa jak urok.

Fast cd ma inne niesamowite rzeczy, które pokochasz! Nie zapomnij ustawić tego aliasu na vim, aby otworzyć ostatnio edytowany plik:

alias lvim="vim -c "normal "0""