Linux Fu: Tarayıcı Emacs Fusion

[ad_1]

Nöronlarıma kalıcı olarak birkaç şey yaktığım bir sır değil: 1802 komut seti, WordStar komutları ve emacs komutları. Emacs’in neredeyse benim işletim sistemim olduğu bir zaman vardı. X11 olmadan, emacs size tek bir pencerede bir kabuğa sahip olmanın, postalarınızı kontrol etmenin ve çalışmanızı açık tutmanın bir yolunu verdi.

Hala emacs’ı çok kullanıyorum (emacs tuş bağlama uzantısına sahip vscode’dan giderek daha fazla memnun kalmama rağmen). Ama aynı zamanda – şu anda olduğu gibi – bir Web tarayıcısında yazmak için çok zaman harcıyorum. Özellikle kod hakkında yazıyorsam, hangi anahtar setini kullanmanız gerektiğini hatırlamak zorlaşıyor ve uzun zamandır bu konuda bir şeyler yapmak istiyordum. Cevap, Autokey adlı çok havalı bir programdır. (Yapabilirsiniz dosyalarımı indir bunun için, ama muhtemelen önce daha fazlasını okumak istersiniz.) Wayland’e geçtiyseniz, muhtemelen işe yaramaz, ancak size biraz yazmaktan tasarruf etmekten en sevdiğiniz programı farklı tuş vuruşlarına sahip olacak şekilde yeniden programlamaya kadar çok şey yapabilir. Ancak, sorunsuz değildir ve size onun hakkında bildiklerimi anlatacağım.

Değer Önerisi

Otomatik anahtar, sistem tepsinizde bulunur ve yazdıklarınızı izler. En basit kullanımında, yazdıklarınızın yerine farklı ifadeler oluşturabilirsiniz.

Örneğin, kendimi biraz yazmaktan kurtarmak için HaD’yi Hackaday olarak görünecek şekilde yeniden programlayabilirim. Genelde başlangıçta veya sonunda bazı tuhaf karakterler kullanırım, böylece yanlışlıkla bir şeyleri tetiklemem. Belki yazmaktan veya yanlış yazmaktan bıktım http://www.hackaday.com. kurabilirdim ~had benim için doğru URL’yi otomatik olarak yazmak için.

Komut Dosyaları ve İfadeler

AutoKey’in yaptığı buysa, oldukça kullanışlı olurdu. Ama bundan çok daha fazlasını yapar. Öte yandan, tüm istediğiniz buysa, cümleleri kullanarak kurmak kolaydır. Bir ifadenin iki bölümü vardır: bir tetikleyici ve bir miktar metin. Tetikleyici bir kısayol tuşu olabilir (Alt+Shift+F6 gibi) veya yazdığınız metin olabilir ~had. Birden fazla kısaltma eklemek mümkündür, böylece fazladan tetikleyicilerim olabilir. had~ ve programın hatalı yazımımı otomatik olarak düzeltmesini isteseydim.

Otomatik anahtarın basit metin değişimi için kurulumu kolaydır, ancak karmaşık Python komut dosyalarını da barındırabilir

Bir ifadenin yalnızca bir kısayol tuşu olabilir, ancak bir kısayol tuşu ve kısaltmalarınız olabilir; ya ifadeyi tetikleyecektir. Elbette, birden çok aynı girişe sahip birden çok kısayol tuşunu da destekleyebilirsiniz. Son olarak, eşleşmeyi normal bir ifadeyle eşleşen belirli bir pencere sınıfıyla sınırlayabilirsiniz. Bu nedenle, kelime işlemciniz için bir dizi kısayola ve web tarayıcınız için başka bir kısayol grubuna sahip olmak mümkündür.

Gerçek güç, yine de, komut dosyaları oluşturabilmenizdir. yerine ifadeler. Bunlar tamamen aynıdır, ancak bir cümle yazmak yerine bir parça Python kodu çalışır. Biraz var sınıflar bir komut dosyasından klavyeyi ve fareyi kontrol etmek gibi şeyler yapmanıza yardımcı olmak için. QT veya GTK kullanarak GUI diyalogları bile oluşturabilirsiniz. Ancak, komut dosyalarını kullanmanın küçük bir dezavantajı olduğunu öğrendim, ancak birçok şey için harika çalışıyorlar. Birazdan ne demek istediğimi anlayacaksınız.

Komut dosyalarına ek olarak, ifadeler tarih, dosya ve hatta bir programın çıktısı gibi belirli dinamik içeriğe sahip olabilir. Metin girişi yapıldıktan sonra imleci belirli bir noktada konumlandırmak için kod parçacıkları oluşturmak için yararlı olan hükümler de vardır.

Güç Kısaltmaları

Kısaltmalar için tetikleyicileri işlemek için birçok seçenek vardır

Kısaltmalara uygulayabileceğiniz birkaç kullanışlı seçenek vardır. Birincisi, hedef programa nasıl metin gönderdiklerini kontrol edebilirsiniz. Yazmayı simüle etmek için genellikle klavye yöntemini kullanırım çünkü özel karakterler kullanacağım, ancak metni birkaç yaygın kısayoldan birini kullanarak da yapıştırabilirsiniz. Yani program, ifadenizi içeren panoyu yükleyebilir ve ardından Control+V ile yapıştırabilir.

Asıl güç, kısaltmaları kurduğunuzda ortaya çıkıyor. Bir iletişim kutusu, tetikleyici sözcüklerin bir listesini seçmenize olanak tanır ve seçenekleri ayarlayabilirsiniz. Varsayılan olarak, siz sözcük olmayan bir karakter yazana kadar kısaltma genişlemeyecektir. Ayrıca bir boşluk veya sekme de isteyebilirsiniz. Ancak başka seçenekler de var. Örneğin, metin başka bir kelimenin parçası olsa bile, Otomatik Tuş tetikleyicisini hemen kullanabilirsiniz. Diğerlerinin yanı sıra, vakayı görmezden gelme veya saygı gösterme seçenekleri vardır.

Pencere Sınıfları

Tetikleme mantığını denetlemek için kullanabileceğiniz son şey, bir komut dosyasını veya tümceyi normal bir ifadeyle eşleşen bir pencere sınıfıyla sınırlamaktır. Bu harika çünkü muhtemelen garip şeyleri tüm pencerelere eşlemek istemiyorsunuz. tabiki olmasında fayda var !address posta adresinizi her programa girin, ancak yapmak istiyorsanız main bir ortak ana işleve genişletin, bunun LibreOffice’te olmasını sevmeyebilirsiniz.

Benim durumumda, pencere sınıfı özelliği oldukça önemliydi çünkü her programda, sadece tarayıcıda kontrol+s gibi şeyleri yeniden eşlemek istemedim.

Hep birlikte

Peki, emac’ları taklit etmek için tüm bunları nasıl bir araya getirirsiniz? Komutların çoğu çok basittir. Örneğin, emacs’ta kontrol+s bir arama başlatır, bu nedenle şu kısayol tuşuyla şu türdeki bir aşama oluşturmak yeterlidir: +f tarayıcının bir arama olduğunu bildiği. Açıkçası, tarayıcının nasıl yapılacağını bilmediği şeyleri kolayca yapamazsınız. Örneğin, ters arama için Control+r mümkün değildir. Bu şekilde bir düzineden fazla temel emacs komutunun haritasını çıkardım. Tarayıcı bir sekmeyi kapatmak için kullandığından, panoya kopyalama yapmak için kontrol+w kısayol tuşunu devre dışı bıraktım ve bunu engellemek istemedim.

Kullandığım Vivaldi tarayıcısının sınıfını bulmak için yerleşik aracı kullandım. Göreceğiniz gibi, bu alanda bir değişiklik yapmam gerektiğini daha sonra öğrenecektim.

Şimdilik, bu tek tuş komutlarıyla ilgilendi. Ancak, iki karakterli komutlar da vardır. Bir planım vardı ama bu plan pek işe yaramadı. Şimdilik, onlarsız yaşıyorum, ancak incelemeniz için kodda devre dışı bırakılmış bir örnek bıraktım.

Bir betiği çalıştırabildiğiniz ve betikler için global bir değişken depolama mekanizması olduğu için planım basitti. Geri almak için emacse olan control+xu’yu düşünün. Bir kısaltmada yazdırılmayan bir karakter kullanamazsınız, bu nedenle durumu tek bir kısayol tuşu ile halletmeniz gerekir. Planım, komut dosyası global deposunda bir önek bayrağını açmak için control+x’i ayarlamaktı. Ardından, u’yu bir kısayol tuşu olarak ele almak için Autokey’i kullanabilirim – yalnızca u harfi – ve bayrağın durumuna bağlı olarak au veya kontrol+z gönderebilirim. Tesadüfen, kod da bayrağı sıfırlayacaktır.

sorunlar

Her şey yolunda gitse bile bununla ilgili sorunlar var, ki bu olmadı. Örneğin, kontrol+x’e ve ardından beklenmeyen bir tuşa basarsanız, bayrak ayarlı kalır ve Otomatik Tuş au’yu bir sonraki gördüğünde, bir geri alma alırsınız. Bu seni şaşırtacaktı! Görünüşe göre yapılacak doğru şey, kendisini devre dışı bırakan veya komut dosyasının bir anahtarı okumasını sağlayan bir tümünü yakalama kuralını etkinleştirmek gibi görünüyor. Ancak bunu yapmak en azından kolay değil gibi görünüyor.

Ancak bu sınırlamayı kabul etmeye hazırdım. Control+x için küçük bir Python kodu yazdım:



store.set_global_value("vmacs-prefix-x","true");


Ardından, her seferinde sadece bir şeyi test etmek için u harfi için şunları yaptım:



state=store.get_global_value("vmacs-prefix-x");
if state == "true":
   keyboard.send_keys("<ctrl>+z");
   store.set_global_value("vmacs-prefix-x","false");
else:
   keyboard.send_key("U");  # note send key will respect shift, etc.


İşe yaramasına sevindim. Bir çeşit. Yazarken bir şeylerin ters gittiğini fark ettim. Oldukça hızlı yazıyorum ama bir şey dikkatimi dağıtmaya devam etti ve ne olduğunu anlayamadım. Sonunda, herhangi bir Otomatik Anahtar komut dosyası veya ifadesi çalıştığında, tarayıcının yalnızca bir onay işareti için odağını kaybettiğini fark ettim. Bazı imleç komutlarına bastığınızda fark etmezsiniz, ancak hızlı yazarken dikkat edin! Komut dosyalarını bıraktım, ancak onları tıpkı control+w ile yaptığım gibi kapattım. Kısa bağlantı kesilmelerine karşı o kadar hassas olmayabilirsiniz ve eğer öyleyse, diğer iki tuşlu kombinasyonları benzer şekilde uygulamak isteyebilirsiniz.

Hayal kırıklığı önlendi

Sahip olduğum diğer sorun büyük bir hayal kırıklığıydı. Makrolar, çok fazla zaman harcadığım çok satırlı editörlerde veya WordPress’te çalışmadı. Hızlı bir kontrol, düzenleme kutularının farklı bir Window sınıfına sahip olduğunu gösterir. Filtreleri normal bir ifadeye dönüştürdüm: .*Vivalid-stable. Tabii ki, farklı bir tarayıcı kullanıyorsanız, ayarlamanız gerekir.

AutoKey, sizin için Pencere özelliklerini araştırabilir.

İki tuşlu kombinasyonlar mümkün olsa da benim için pratik olmadıkları için hala biraz hayal kırıklığına uğradım. Neredeyse her normal anahtarı yakalamanız gerekeceğinden, vi’yi de simüle etmeye çalışıyorsanız, bunun sizi ısıracağından şüpheleniyorum.

Yine de, tüm bu yazıyı emacs semantiğini kullanarak yazdım ve ara sıra kontrol+y kullanarak yapıştırmayı unutmak dışında harika gitti. Yine de control+w no’yu geri çevirebilirim çünkü yapıştırmaya çalışırken pencereyi birkaç kez yanlışlıkla kapattım.

Seçtiğiniz düzenleyicide metin alanlarını düzenlemenize izin verdiğini iddia eden tarayıcı uzantıları vardır. Çalışırlar, ancak metinleri editöre ileri geri kopyalamaktan biraz daha fazlasıdır. Bu küçük şeyler için harika, ancak WordPress özellikleriyle büyük bir gönderi oluşturmaya çalışmak gerçekten pratik değil. Bu sistem ile metin düzenlerken ve URL çubuğunda emacs semantiğine sahip olabilirsiniz. Sistemi hemen hemen her programa uyarlamak önemsiz olacaktır.

Emac’ları önemsemeyebilirsiniz, ancak Autokey gibi bir programla yapabileceğiniz birçok zaman kazandıran şey var. URL’ler için kısayollardan, tek satırları bash’a, tekrar tekrar yazdığınız şeylere kadar, Autokey hem basit şeyler için kurulumu basittir hem de büyük işleri halledecek kadar karmaşıktır. Keşke Wayland’da çalışsa.

[ad_2]
Kaynak : https://hackaday.com/2022/07/06/linux-fu-the-browser-emacs-fusion/

Yorum yapın

SMM Panel PDF Kitap indir