Ohmyzsh: penyelesaian git gagal ketika opsi complete_aliases disetel

Dibuat pada 2 Jan 2014  ·  40Komentar  ·  Sumber: ohmyzsh/ohmyzsh

Saya menjalankan zsh 5.0.4 di OS X 10.8 dengan oh-my-zsh a38af27 dengan plugin git . Ketika saya mengetik gco <TAB> , saya mendapatkan output berikut:

% gco zsh:12: command not found: __git-checkout_main
extegco
file
MIT-LICENSE.txt  custom/          log/             plugins/         themes/
README.textile   lib/             oh-my-zsh.sh     templates/       tools/

Saya telah menemukan pelakunya sebagai opsi complete_aliases . Setelah saya mematikannya, semuanya berfungsi seperti yang diharapkan.

Apa yang memberi? Apakah ada opsi bentrokan? Saya sudah lama tidak mengganti .zshrc saya, dan saya selalu mengaktifkan complete_aliases .

Saya tidak terlalu membutuhkan opsi ini tetapi saya kira ada beberapa bug di sini.

Komentar yang paling membantu

Masalahnya di sini adalah penyelesaian Git resmi tidak disiapkan untuk 'complete_aliases', saya telah mendorong perbaikan:

https://github.com/felipec/git/commit/aaafa76

Dengan cara ini Anda dapat secara manual menentukan penyelesaian dengan:

compdef _git gco=git_checkout

Namun, jika Anda ingin menggunakan format zsh: gco=git-checkout dan agar berfungsi dalam versi Git yang saat ini didistribusikan, Anda dapat melakukan ini:

alias __git-checkout_main=_git_checkout

Semua 40 komentar

:+1: Masalah yang sama persis... sangat membingungkan.

Menarik.

Untuk yang malas, inilah yang dikatakan panduan Zsh tentang complete_aliases :

Mencegah alias pada baris perintah diganti secara internal sebelum penyelesaian dicoba. Efeknya adalah menjadikan alias sebagai perintah yang berbeda untuk tujuan penyelesaian.

Namun, sejak 57f55e69ed967e93c0fd44a6a7e470781eb38029 dan 2e9492969b0ea90932ad3f4298330b75ef8cf2ce, alias dari plugin git memiliki set penyelesaiannya sendiri, dan dialihkan ke subperintah git yang tepat, termasuk gco . Jadi masalah ini _tidak boleh_ terjadi. Adakah yang tahu mengapa masih ada?

Akhirnya, saya tidak dapat mereproduksi masalah dengan Zsh 5.0.2 di Mac 10.9.2: complete_aliases sekali tidak mengubah perilaku penyelesaian pada gco , bahkan jika saya menghapus penyelesaian cache.

@slhck @mecampbellsoup dapatkah Anda mencoba dengan templat .zshrc dan melihat apakah itu masih terjadi?

Juga @mecampbellsoup dapatkah Anda memposting konfigurasi sistem dan versi

@mcornella @simonweil (pembantu saya yang bahagia =D) dapatkah Anda mencoba mereproduksi masalah?

Saya sekarang menggunakan Zsh 5.0.5 dengan oh-my-zsh eafd5f3 . Jika saya menggunakan template .zshrc tidak ada masalah. Tentu saja, karena tidak ada opsi complete_aliases di sana.

Segera setelah saya memasukkan setopt complete_aliases , menekan Tab setelah gco membuat saya mendapatkan kesalahan lama yang sama.

@ncanceill Tentu, ini dia:

⇒  zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)⇒  zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)

Konfigurasi lengkap .zshrc dan zsh dapat ditemukan di sini: https://github.com/mecampbellsoup/dotfiles/tree/master/zsh

versi oh-my-zsh adalah eafd5f3 juga.

Tidak tahu .. mungkin kesalahan cache compinit? Jika demikian, coba hapus file .zcompdump* di direktori $HOME Anda

@mcornella Sayangnya, itu tidak membantu.

@slhck Saya pikir mungkin kita harus mulai memeriksa komit zsh untuk melihat apakah kita dapat menemukan bug...?

@mecampbellsoup ya, itu bisa membantu! Saya merekomendasikan penggunaan git-bisect .


Masalah yang tidak dapat direproduksi menunjukkan bahwa itu ada hubungannya dengan konfigurasi Anda, dan fakta bahwa itu masih terjadi dengan template .zshrc menunjukkan bahwa itu tidak terkait dengan konfigurasi OMZ Anda.

Mari kita mulai dengan menentukan apa yang harus dilakukan oleh pernyataan compdef . Membaca manual penyelesaian Zsh menunjukkan sedikit lebih banyak tentang cara kerjanya:

#compdef names... [ -[pP] patterns... [ -N names... ] ]
Setiap nama juga dapat berbentuk '_cmd=service_'. Saat menyelesaikan perintah _cmd_, fungsi biasanya berperilaku seolah-olah perintah (atau konteks khusus) _service_ sedang diselesaikan. Ini menyediakan cara untuk mengubah perilaku fungsi yang dapat melakukan banyak penyelesaian yang berbeda. Ini diimplementasikan dengan mengatur parameter $service saat memanggil fungsi; fungsi dapat memilih untuk menafsirkan ini sesuai keinginannya, dan fungsi yang lebih sederhana mungkin akan mengabaikannya.

compdef [ -ane ] function names... [ -[pP] patterns... [ -N names... ] ]
Bentuk pertama mendefinisikan _function_ untuk memanggil penyelesaian dalam konteks yang diberikan seperti yang dijelaskan untuk tag #compdef atas.
Atau, semua argumen mungkin memiliki bentuk '_cmd=service_'. Di sini _service_ seharusnya sudah didefinisikan oleh baris '_cmd1=service_' dalam file #compdef , seperti dijelaskan di atas. Argumen untuk _cmd_ akan diselesaikan dengan cara yang sama seperti _service_.

Tapi kemudian saya melihat penyelesaian Zsh git (dengan jumlah baris 6661 oh-begitu-jahat), dan git-checkout tidak tercantum dalam pernyataan #compdef , dan $service juga tidak diperiksa. Jadi saya tidak tahu mengapa compdef _git gco=git-checkout berhasil — tetapi itu berhasil!

@pielgrzym dapatkah Anda memberi tahu kami tentang 2e9492969b0ea90932ad3f4298330b75ef8cf2ce?

Penggalian yang bagus @ncanceill!

$service juga tidak diperiksa. Jadi saya tidak tahu mengapa compdef _git gco=git-checkout berhasil — tetapi itu berhasil!

Memang diperiksa di dalam fungsi _git() , CTRL+F menunjukkan bahwa ini adalah if-else yang sederhana:

if [[ $service == git ]]; then
    [...]
else
    _call_function ret _$service
fi

jadi ia kemudian memanggil _git-checkout , yang juga didefinisikan, tetapi hanya jika sebelumnya tidak didefinisikan :

(( $+functions[_git-checkout] )) ||
_git-checkout () { [...] }

Mungkin keduanya memiliki fungsi _git-checkout ditentukan di tempat lain yang memicu perilaku ini?
Juga, pesan kesalahan mengeluarkan __git-checkout_main (_dengan dua garis bawah_), dan kemudian extegco\n file . Sepertinya pesan itu ditimpa, seolah-olah zle ada hubungannya dengan itu..

BTW, sumber yang Anda tautkan berasal dari cabang master, berikut adalah 5.0.4 dan 5.0.5

Terima kasih @mcornella , saya menemukan cek untuk $service == git tetapi dengan bodohnya mengabaikan klausa else ! Dan saya tidak menemukan keberanian untuk bermain dengan SF's git viewer (yang BTW tidak memiliki nomor baris!) untuk mencari titik tertentu dalam sejarah, malas saya!

Saya suka petunjuk Anda tentang _git-checkout tidak didefinisikan karena ada di tempat lain. @slhck @mecampbellsoup dapatkah Anda menjalankan which _git-checkout untuk memeriksa apakah Anda memiliki fungsi yang tepat?

Mengenai keluaran aneh, saya telah melihat zle melakukan banyak hal aneh, jadi saya tidak terlalu terkejut. Tapi saya sama bingungnya dengan __git-checkout_main seperti Anda.

Satu hal terakhir, menggunakan git checkout alih-alih gco harus menunjukkan perilaku yang sama

@ncanceill @mcornella Jadi, inilah beberapa keluaran untuk Anda, keduanya diambil setelah mencoba penyelesaian tab:

matthewcampbell@Matthews-MacBook-Air:~/Sites/code/stack-builders/seo_platform|69220108_adjust_keyword_editing_on_dealer⚡
⇒  gco ......zsh:12: command not found: __git-checkout_main
⇒  git checkout
67061970_notify_sidekiq_hangs                            origin/67061970_notify_sidekiq_hangs                     production
67394702_track_keywords_change                           origin/67394702_track_keywords_change                    production_2014-04-21

(PS Ini sama dengan output ketika saya baru saja alias gco=git checkout aktif dan saya menggunakan gco , yaitu setelah saya berkomentar setopt complete_aliases di file .zshrc )

Dan ketika saya bertanya tentang which _git-checkout (dan which __git-checkout juga):

⇒  which _git-checkout
_git-checkout not found
⇒  which __git-checkout
__git-checkout not found

Coba ini:

autoload -Uz _git-checkout && _git-checkout
which _git-checkout

Maaf, tetapi tidak menjadi jelas jika masalah muncul hanya dengan menggunakan git checkout <TAB> alih-alih gco <TAB> ..

Juga, coba nonaktifkan OMZ seluruhnya: yaitu, menggunakan file .zshrc kosong. Penyelesaian Git harus tetap ada dan masalahnya juga

Dan satu hal terakhir, apakah hal yang sama terjadi di repositori git lain?

@mcornella Lebih banyak keluaran untuk ya':

⇒  autoload -Uz _git-checkout && _git-checkout
zsh: _git-checkout: function definition file not found
⇒  which _git-checkout
_git-checkout () {
    # undefined
    builtin autoload -XUz
}

Tampaknya pada dasarnya semua fungsi penyelesaian Git saya rusak, omong-omong (saya harus <TAB> dua kali untuk membuat kesalahan muncul):

⇒  ga ......zsh:12: command not found: __git-add_main
⇒  gco ......zsh:12: command not found: __git-checkout_main
⇒  gd ......zsh:12: command not found: __git-diff_main
⇒  gst ......zsh:12: command not found: __git-status_main

Saya cukup rugi. Beri tahu saya apa lagi yang bisa saya lakukan untuk membantu.

@mcornella Hal super aneh lainnya yang terjadi di pengaturan saya adalah hasil dari fungsi where :

⇒  where ruby
ruby: aliased to bundled_ruby
/Users/matthewcampbell/.rbenv/shims/ruby
/Users/matthewcampbell/.rbenv/shims/ruby
/usr/bin/ruby
⇒  where coqc
/usr/local/bin/coqc
/usr/local/bin/coqc
/usr/local/bin/coqc
/usr/local/bin/coqc

Mengapa ZSH mengembalikan saya hasil yang sama 4 kali?!

Oke, bersabarlah, untuk terakhir kalinya:

autoload -Uz _git && _git
which _git-checkout

dan

echo '$fpath = ('$fpath')'
echo '$path = ('$path')'

Juga, coba apa yang saya sebutkan tentang menggunakan file .zshrc kosong

⇒  autoload -Uz _git && _git
zsh:12: command not found: ___main
_default:compcall:12: can only be called from completion function
⇒  which _git-checkout
_git-checkout not found
⇒  echo '$fpath = ('$fpath')'
$fpath = (/Users/matthewcampbell/.oh-my-zsh/plugins/gem /Users/matthewcampbell/.oh-my-zsh/plugins/brew /Users/matthewcampbell/.oh-my-zsh/plugins/bundler /Users/matthewcampbell/.oh-my-zsh/plugins/git /Users/matthewcampbell/.oh-my-zsh/functions /Users/matthewcampbell/.oh-my-zsh/completions /Users/matthewcampbell/.dotfiles/zsh /Users/matthewcampbell/.dotfiles/xcode /Users/matthewcampbell/.dotfiles/vim /Users/matthewcampbell/.dotfiles/tmux /Users/matthewcampbell/.dotfiles/system /Users/matthewcampbell/.dotfiles/sublime2 /Users/matthewcampbell/.dotfiles/script /Users/matthewcampbell/.dotfiles/ruby /Users/matthewcampbell/.dotfiles/python /Users/matthewcampbell/.dotfiles/osx /Users/matthewcampbell/.dotfiles/macvim /Users/matthewcampbell/.dotfiles/homebrew /Users/matthewcampbell/.dotfiles/git /Users/matthewcampbell/.dotfiles/functions /Users/matthewcampbell/.dotfiles/ctags /Users/matthewcampbell/.dotfiles/cloudapp /Users/matthewcampbell/.dotfiles/bin /Users/matthewcampbell/.dotfiles/functions /usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.5/share/zsh/functions)
⇒  echo '$path = ('$path')'
$path = (/Users/matthewcampbell/.rbenv/shims /usr/local/opt/coreutils/libexec/gnubin /usr/local/bin /Users/matthewcampbell/.cabal/bin /Applications/Postgres93.app/Contents/MacOS/bin /usr/local/bin /usr/local/heroku/bin ./bin /Users/matthewcampbell/.rbenv/shims /usr/local/bin /usr/local/sbin /Users/matthewcampbell/.sfs /Users/matthewcampbell/.dotfiles/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/local/go/bin /usr/local/MacGPG2/bin /Users/matthewcampbell/.rbenv/shims /usr/local/opt/coreutils/libexec/gnubin /Users/matthewcampbell/.cabal/bin /Applications/Postgres93.app/Contents/MacOS/bin /usr/local/heroku/bin ./bin /usr/local/sbin /Users/matthewcampbell/.sfs /Users/matthewcampbell/.dotfiles/bin /usr/local/Cellar/go/1.2.1/bin /usr/local/Cellar/go/1.2.1/bin)

Juga, coba nonaktifkan OMZ seluruhnya: yaitu, menggunakan file .zshrc kosong. Penyelesaian Git harus tetap ada dan masalahnya juga

Matthews-MacBook-Air% autoload -Uz _git-checkout && _git-checkout
zsh: _git-checkout: function definition file not found
Matthews-MacBook-Air% gd
zsh: command not found: gd
Matthews-MacBook-Air% gst
zsh: command not found: gst
Matthews-MacBook-Air% gco
zsh: command not found: gco

Sepertinya penyelesaian tidak bertahan ...

autoload -Uz _git && _git
zsh:12 : perintah tidak ditemukan: ___main

Ini mengkonfirmasi masalah yang terjadi dengan setiap penyelesaian git, saya kira ada yang salah dengan _git() . Silakan posting hasil which _git

Sepertinya penyelesaian tidak bertahan ...

Saat Anda menggunakan zsh tanpa oh-my-zsh, jangan gunakan alias tetapi perintah git lengkap, karena alias tidak didefinisikan tanpa oh-my-zsh. Anda dapat menavigasi ke repositori git dan memasukkan perintah git apa pun (misalnya git checkout <TAB> ), dengan dan tanpa setopt completealiases ; penyelesaian git diaktifkan secara default.

Juga, tampaknya Anda memiliki entri duplikat di $path; untuk menegakkan nilai unik tambahkan perintah typeset -U path di akhir .zshrc (setelah semua entri jalur ditambahkan)

Terima kasih @mcornella , sangat membantu saya.

⇒  which _git
_git () {
        local _ret=1
        local cur cword prev
        cur=${words[CURRENT]}
        prev=${words[CURRENT-1]}
        let cword=CURRENT-1
        if (( $+functions[__${service}_zsh_main] ))
        then
                __${service}_zsh_main
        else
                emulate ksh -c __${service}_main
        fi
        let _ret && _default && _ret=0
        return _ret
}

Saat Anda menggunakan zsh tanpa oh-my-zsh, jangan gunakan alias tetapi perintah git lengkap, karena alias tidak didefinisikan tanpa oh-my-zsh.

Ketika saya menggunakan perintah git DENGAN ACTIVE OMZ, perilakunya sedikit berbeda dari apa yang saya miliki dengan alias... lihat:

⇒  git checkout <TAB>
64879538_fix_li_elements                             master                                               origin/master
64908958_center_products_text_in_div                 next_ror_post                                        origin/next_ror_post
64916916_fix_contact_emails                          origin/64879538_fix_li_elements                      origin/oss_contrib_blog_post
64919128_override_fonts                              origin/64908958_center_products_text_in_div          origin/production
65271680_fix_map_resizing                            origin/64916916_fix_contact_emails                   origin/sprites
65753620_translate_navigation_bar                    origin/64919128_override_fonts                       origin/title-update-final

Di masa lalu, saat menggunakan gco <TAB> hanya cabang lokal yang akan muncul sebagai opsi. Pada output di atas, semua cabang pada remote origin muncul.

Inilah output ketika saya menonaktifkan OMZ dan menjalankan perintah git :

Matthews-MacBook-Air% git checkout README.md
Procfile                 Setup.hs                 circle.yml               dist/                    node_modules/            stackbuilders.com.cabal
README.md                assets/                  client_session_key.aes   news/                    src/                     tests/

Tampaknya, yah, rusak, yang masuk akal karena saya telah menonaktifkan plugin git seperti yang diaktifkan di .zshrc .

Ok, sekarang kita tahu dari mana _git-checkout_main berasal. Fungsi _git() kacau, tetapi saya tidak tahu mengapa. Saya berasumsi Anda memiliki setopt completealiases di .zshrc . Silakan dan nonaktifkan itu, lalu jalankan which _git lagi.
Juga, posting file /usr/local/Cellar/zsh/5.0.5/share/zsh/functions/Completion/Unix/_git di Gist

Ini dengan setopt complete_aliases dinonaktifkan:

⇒  which _git
_git () {
    # undefined
    builtin autoload -XUz
}

Sepertinya saya tidak memiliki filepath itu - saya memiliki hingga /functions tetapi tidak /Completion dan seterusnya... (banyak yang dihilangkan dalam hal berikut):

matthewcampbell@Matthews-MacBook-Air:~|
⇒  vim /usr/local/Cellar/zsh/5.0.5/share/zsh/functions/
VCS_INFO_adjust                _dmidecode                     _matlab                        _snoop                         _zpty
VCS_INFO_bydir_detect          _domains                       _md5sum                        _socket                        _zsh-mime-handler
VCS_INFO_check_com             _dpatch-edit-patch             _mdadm                         _sockstat                      _zstyle
VCS_INFO_detect_bzr            _dpkg                          _members                       _softwareupdate                _ztodo
VCS_INFO_detect_cdv            _dpkg-buildpackage             _mencal                        _sort                          _zypper

Oke, jalur file harus /usr/local/Cellar/zsh/5.0.5/functions/Completion/Unix/_git

Mengenai _git() , Anda perlu mencoba melengkapi beberapa perintah git secara otomatis sebelum menjalankan which _git

Masih tidak dapat menemukan filepath itu saudara ... inilah Intisari dengan output tree berjalan dari dalam direktori ZSH : https://Gist.github.com/mecampbellsoup/1065d4228b143140ac69

Inilah which _git setelah menjalankan fungsi pelengkapan otomatis (khususnya saya mencoba ga , gd , dan gc ):

⇒  which _git
_git () {
    local _ret=1
    local cur cword prev
    cur=${words[CURRENT]}
    prev=${words[CURRENT-1]}
    let cword=CURRENT-1
    if (( $+functions[__${service}_zsh_main] ))
    then
        __${service}_zsh_main
    else
        emulate ksh -c __${service}_main
    fi
    let _ret && _default && _ret=0
    return _ret
}

Oke, saya mengerti sekarang bagaimana Homebrew menginstal zsh , terima kasih untuk itu tree Intisari! Oleh karena itu, file penyelesaian _git ada di /usr/local/Cellar/zsh/5.0.5/functions/_git . Silakan posting itu.

Saya mulai berpikir ini adalah masalah dengan instalasi zsh homebrew Anda. Mungkin harus uninstall dan install lagi.. Atau tanya ke @Homebrew guys?

https://Gist.github.com/80a00d7af3766c1ad6dc

@mcornella Apakah menurut Anda itu ada hubungannya dengan dotfiles yang saya instal belum lama ini? Mereka adalah @holman ... https://github.com/mecampbellsoup/dotfiles/blob/master/zsh/config.zsh

Nah, instalasi zsh Anda sudah benar. Tampaknya meskipun Anda memiliki beberapa tempat lain yang mendefinisikan ulang penyelesaian git Anda, karena which _git dan fungsi _git() didefinisikan dalam file _git disediakan dalam Gist sangat berbeda.

Apakah menurut Anda itu ada hubungannya dengan dotfile yang saya instal belum lama ini?

Itu mungkin ya. Dalam file ini sumber file penyelesaian, periksa yang itu untuk saya, tolong dan terima kasih : cat $(brew --prefix)/share/zsh/site-functions/_git

@slhck , mungkin itu masalah yang sama, apakah Anda memiliki dotfiles @holman juga?

Ya, file itu adalah pelakunya. Definisi fungsi _git () ada di bagian bawah file, Anda akan melihat bahwa itu cocok dengan output which _git Anda dapatkan.

Saya tidak tahu bagaimana Anda harus melanjutkan sekarang. Anda dapat mengganti nama file yang baru saja Anda buat sehingga dotfiles tidak akan menemukannya, atau menghapus dotfiles seluruhnya, atau cukup hapus dotfiles/git/completion.zsh dari fork Anda (tetapi kemudian Anda akan mengalami konflik gabungan dari memperbarui dotfiles).

@mcornella Maaf, bagaimana Anda menjelaskan perilaku ini dengan tepat? Saya sedikit bingung :/

⇒  which _git
_git () {
    # undefined
    builtin autoload -XUz
}
matthewcampbell@Matthews-MacBook-Air:~/.dotfiles|master⚡
⇒  ga
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
matthewcampbell@Matthews-MacBook-Air:~/.dotfiles|master⚡
⇒  which _git
_git () {
    local _ret=1
    local cur cword prev
    cur=${words[CURRENT]}
    prev=${words[CURRENT-1]}
    let cword=CURRENT-1
    if (( $+functions[__${service}_zsh_main] ))
    then
        __${service}_zsh_main
    else
        emulate ksh -c __${service}_main
    fi
    let _ret && _default && _ret=0
    return _ret
}

Untuk _this behavior_ maksud Anda output yang berbeda dari keduanya which _git ? Jika demikian, itu karena penyelesaiannya adalah _autoloaded_, seperti yang Anda lihat di which _git . Ini berarti definisi hanya dimuat saat pertama kali dibutuhkan, jadi pertama kali Anda meminta penyelesaian perintah git, saat itulah fungsi _git memuat definisi.

Dan perilaku yang benar kemungkinan akan ditimpa di beberapa titik, mungkin oleh sesuatu di config.zsh ?

Ya, file yang memuat penyelesaian yang lebih lama adalah file ini di dotfiles Anda . Jika Anda menghapusnya, Anda akan mendapatkan penyelesaian yang tepat kembali.

Ini terlihat sangat mirip dengan yang Anda lakukan brew install hub . Lihatlah komentar ini dan masalah ini: #1727.
Mengikuti saran pada yang terakhir akan memperbaikinya.

@slhck Anda akan menemukan perbaikan Anda dalam komentar ini: https://github.com/robbyrussell/oh-my-zsh/issues/2800#issuecomment -43694975

@mcornella Maaf untuk jawaban yang terlambat. Saya tidak memiliki akses ke mesin yang mengekspos masalah.

Berlari

brew uninstall --force git && brew install git --without-completions

memecahkan masalah memang.

Terima kasih banyak atas penyelidikan Anda.

Masalahnya di sini adalah penyelesaian Git resmi tidak disiapkan untuk 'complete_aliases', saya telah mendorong perbaikan:

https://github.com/felipec/git/commit/aaafa76

Dengan cara ini Anda dapat secara manual menentukan penyelesaian dengan:

compdef _git gco=git_checkout

Namun, jika Anda ingin menggunakan format zsh: gco=git-checkout dan agar berfungsi dalam versi Git yang saat ini didistribusikan, Anda dapat melakukan ini:

alias __git-checkout_main=_git_checkout

temukan .zshrc dan hapus komentar

Contoh alias

alias zshconfig="st ~/.zshrc"

di sini

alias ohmyzsh="mate ~/.oh-my-zsh"

alias gco="git checkout"

Adakah yang bisa membantu saya men-debug mengapa saya mendapatkan masalah ini? Itu terjadi dengan dan tanpa set complete_aliases . Juga, menghapus file .zcompdump* tidak memperbaikinya. Plugin saya baru saja disetel ke plugins=(git gitfast) , namun saya mendapatkan masalah ini dengan penyelesaian fungsi (yang membuat frustrasi karena saya idealnya menggunakan fungsi gco saya sendiri yang disesuaikan alih-alih gco plugin git
ggl _git:12: command not found: __git-checkout_main
gdv _git:12: command not found: __git-diff_main

Saya menggunakan Powerlevel10k pada oh-my-zsh 173d4ca68f1ff4b04e9f3fd783244c309d848092, dengan zsh 5.8 (x86_64-Apple-darwin19.3.0) dan git versi 2.26.1. Sayangnya brew uninstall --force git && brew install git --without-completions tidak lagi menjadi opsi dengan git.

Inilah definisi saya tentang _git .

❯ which _git
_git () {
    local _ret=1
    local cur cword prev
    cur=${words[CURRENT]}
    prev=${words[CURRENT-1]}
    let cword=CURRENT-1
    if (( $+functions[__${service}_zsh_main] ))
    then
        __${service}_zsh_main
    else
        emulate ksh -c __${service}_main
    fi
    let _ret && _default && _ret=0
    return _ret
}

@jessrosenfield Itu karena Anda kehilangan tambalan. Saya tidak yakin apakah Anda menggunakan ohmyzsh terbaru, tetapi ada beberapa ketidakcocokan dan tambalan saya dikembalikan:

penyelesaian: zsh: tingkatkan pemilihan fungsi utama

@felipec Saya memperbarui tetapi semuanya masih tidak berfungsi (masalah saya saat ini # 9018 sedikit berbeda)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

leongaban picture leongaban  ·  3Komentar

robsonpeixoto picture robsonpeixoto  ·  3Komentar

dogrizz picture dogrizz  ·  3Komentar

nimmoadam picture nimmoadam  ·  3Komentar

mrgaolei picture mrgaolei  ·  3Komentar