Python blok hareketinin sonu


13

Bir python bloğunun sonuna / sonuna hareket eden bir harekete ihtiyacım var ve önceki / sonraki yöntem / sınıfın başlangıcına / sonuna (tüm kombinasyonlar) hareket eden başka bir harekete ihtiyacım var.

Ben vim-indent-object, python-mode, chapa, vim-python-object, vb denedim. Hiçbiri blok sonuna destek ve hiçbiri yukarıdaki hareketlerin tüm kombinasyonları desteklemiyor.

Bir zamanlar o şartla ki bir eklenti vardı bir zamanlar hatırlıyorum ]], [[, ][ve []"[ "[ve]" Önceki / sonraki yöntemi / sınıfın / ucunu başlangıç için hareketleri ama (aranan]" my takılı dizinde bulamıyorum ekli dizindeki ve tüm oluşumları analiz etti ancak "] [" veya "[]") tanımlayan bir şey bulamadı.

Eskiden kullandığım eklentiyi biliyor musun? Bu işlevi sağlayan herhangi bir eklenti biliyor musunuz?



3
[[ve ]]varsayılan python ftplugin tarafından sağlanır.
romainl

1
bilgi için @romainl teşekkürler, biliyorum yaklaşık [[, ]], (, ), {ve }. [[ve ]]bazı durumlarda kullanışlıdır, ancak asıl sorunum bir sonraki / önceki yöntemin / sınıfın sonuna atlar sağlayan ihtiyacım []ve / ][veya bunun gibi bir şeydir.
Sassan

1
teşekkürler, bu ]ebenim sorunların çoğunu çözer, ancak bu eklenti bazı eşlemeler gibi kırık görünüyor ]vya da ]>ben bir çatal düzeltmek ve yayınlamak çalışacağım. Yine de sağlanan eklentinin ne olduğunu merak ettim ][ve []gerçekten yararlı oldu.
Sassan

Yanıtlar:


11

$VIMRUNTIME/ftplugin/python.vimPython dili için aşağıdaki ft'e özgü hareketlerin son güncellemesiyle (Kasım 2017) artık kullanılabilir

  • [[ Geçerli / önceki üst düzeye başlamak için geriye doğru atla
  • [] Önceki üst seviyenin sonuna geri git
  • ][ Geçerli üst seviyenin sonuna ileri git
  • ]] Sonraki üst seviyeye başlamak için ileriye atla
  • [m Geçerli / önceki yöntem / kapsamın başlangıcı için geriye doğru atla
  • [M Önceki yöntemin / kapsamın sonuna geri git
  • ]M Geçerli / sonraki yöntemin / kapsamın sonuna doğru atla
  • ]m Sonraki yöntemin / kapsamın başlaması için ileriye doğru atla

Örnek python dosyası

class previous:             # [[[[

    def method_first:
        pass
    # ...

    def method_last:
        pass                # []

class current:              # [[ or [m...[m[m

    def method_first:       # [[]m or [m...[m
        pass                # [[]M or [M...[M
    # ...

    def method_previous:    # [m[m
        pass                # [M

    def method_current:     # [m
        # CURSOR <---------------------------
        pass                # ]M

    def method_next:        # ]m
        pass                # ]M]M
    # ...

    def method_last:        # ][[m or ]m...]m
        pass                # ][   or ]M...]M

class previous:             # ]]   or ]m...]m]m

    def method_first:
        pass
    # ...

def global_func:            # ]]]]
    pass

Vim yama seviyeniz en azından ise bu güncelleme dahil edilmelidir 8.0.1256.

Güncelleyemeseniz ancak bu işlevi kullanmak istiyorsanız, ~/.vimdizine en son sürümü yükleyebilirsiniz :

$ curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.vim/ftplugin/python.vim

Eklenti Pythonsense

Bu eklenti benzer hareketler sağlar, ancak biraz değiştirilir:

Stok Vim 8.0 "sınıf" hareketleri (" ]]", " [[" vb.), Bunların sınıf veya işlev blokları olup olmadığına bakılmaksızın birinci sütunda başlayan blokları bulurken, yöntem / fonksiyon hareketleri (" [m", " ]m", vb.) tüm blokları sınıf veya fonksiyon blokları olsun ya da olmasın herhangi bir girinti içinde bulun. Buna karşılık, "Pythonsense" sınıf hareketleri, girinti düzeylerinden bağımsız olarak tüm ve tek sınıf tanımlarını bulmaya çalışırken, yöntem / işlev hareketleri, girinti düzeylerinden bağımsız olarak tüm ve tek yöntem / işlev tanımlarını bulmaya çalışır.

Tüm detaylar ve örnekler https://github.com/jeetsukumaran/vim-pythonsense#stock-vim-vs-pythonsense-motions adresinde verilmiştir .


Neovim bu yamayı getirene kadar beklemeliyim.
Sassan

1
Sanırım şimdilik manuel olarak kurabiliyordunuz curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.config/nvim/ftplugin/python.vim.
Hotschke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.