Seçeneği vi'ye ayarlamak için bu komutu kullanan birçok geliştirici gördüm. Bunun gerçek kullanımını hiç anlamadım mı?
Bash komutlarını kullanırken, vi'ye geçmenin yardımı nedir?
Seçeneği vi'ye ayarlamak için bu komutu kullanan birçok geliştirici gördüm. Bunun gerçek kullanımını hiç anlamadım mı?
Bash komutlarını kullanırken, vi'ye geçmenin yardımı nedir?
Yanıtlar:
Readline düzenlemenizi emacs (varsayılan) veya vi ( set -o vi
) olarak ayarlayarak, düzenleme komutlarınızı, kabuk ve seçim editörü 1'de standartlaştırıyorsunuz .
Böylece, kabuktaki bir komutu düzenlemek istiyorsanız , metin düzenleyicinizde olsaydınız yaptığınız komutların aynısını kullanırsınız 2 . Bu, yalnızca bir komut sözdizimini hatırlamak zorunda olduğunuz anlamına gelir ve (eğer yeterince avantaj olmasaydı) muhtemelen her iki ortamda da düzenlemenizi daha hızlı ve daha az hataya meyilli yapar ...
Bu ilişkiyi vi-modda, kabuk geçmişinizden herhangi bir komutu çekerek, Escapekomut moduna girmek için vurup ardından vurarak vaçabilirsiniz; bu, $ EDITOR'unuzu vim'in tam gücü ile daha karmaşık düzenleme için yüklenen komutla açar. Komutu sizin memnuniyetinize göre düzenlemeyi bitirdikten sonra komut :wqkabuğunuzda tekrar çalıştırılır.
1. Elbette, editörünüz olarak Emacs veya Vi / m kullandığınızı varsayar.
2. Veya daha doğrusu, bunların bir alt kümesi ...
set -o vi
çoğu insanın bilmediği en iyi özelliklerden biridir . Bu özellikle, aynı komutu farklı argümanlarla birden fazla kez (çoklu komut satırı komutları gibi) vermek istiyorsanız geçerlidir.
set -o vi
. Varsayılan set -o EMACS
Cx ayarının altında Ce, $EDITOR
çalıştırmadan önce komutu düzenleyebileceğiniz bir emacs penceresi (veya ayarlandıysa) açacaktır .
Vi modu, Android için ConnectBot gibi bir mobil SSH istemcisi kullanıyorsanız, büyük bir kullanılabilirlik gelişimidir.
Bunun sebebi değiştirici tuşlara olan güvenin azalmasıdır.
Vim, bir akıllı telefon veya tablette sanal bir klavyeyle kullanmak için Android kullanıcı arayüzünde yerleşik yerel düzenleme yöntemleri de dahil olmak üzere her şeyden çok daha kolaydır. İronik olarak, bir SSH oturumunda Vim ile C kaynaklarını düzenlemek, bunun için platformun kendi düzenleme widget'ına sahip bir anlık mesajı düzenlemek yerine, söylemek daha kolaydır.
Shell vi modu da benzer bir fayda sağlar.
Vi modlarını ve işlemlerini kullanarak komut satırındaki öğeleri düzenlemenizi sağlar.
Bir örnek daha net olmasına yardımcı olacaktır:
Sen yaz cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
ancak bir hata alıyorum - Yazdığınız gerekirdi file1.txt
değilfile1.xt
Without Bu seçenek ayarlandığında, sen yukarı ok tuşuna basın ve ardından sol oka basın ve almak kadar, 35 kez ... için tekrar izin .xt
ve sonra ekstra yazın t
. Toplam tuş vuruşları: 37 .
Bu seçenek seti ile (örneğin) bir kez yukarı ok, sonra komut modu için Escape, 0 satırın başına gitmek için ve sonra /xt[return]
almak xt
ve sonra i
ekleme modu için yazabilir ve eksik t yazabilirsiniz. Bu bazı açılardan delicesine karmaşık görünebilir, ancak bir vim kullanıcısıysanız bu komut zaten çok iyi bilinmektedir. Toplam tuş vuruşları: 9
Alt+B
saniye veya bir Ctrl+Alt+]
.
Emacs modunda kullanabilirsiniz, bu yüzden bu bana güçlü bir örnek gibi görünmüyor.
Up
, Ctrl+Alt+]
, .
, Right
, t
, Enter
= 8. Vi modu: Up
, F
, .
, a
, t
, Enter
= 7. :)
Esc
.
Doğrudan bir avantaj olup olmadığından emin değilim. Ben oldum vi
20 yıldan fazla kullanıcı. Ayrıca screen
daha uzun süredir ve vi
anahtarları kullanan diğer programlarda da kullanıcıyım . Bash olarak "vi" modunu seçmem benim için doğal. Ancak işimdeki yüzlerce sunucu üzerinde çalışıyorum, çoğu varsayılan "emacs" moduna ayarlanmış. Bu yüzden iki modu da kullanmam gerekiyor. Ama bu gerçekten sadece bir tercih meselesidir.
ssh
için kullanıyorum. Elbette, yerel olarak bir makineyi kullanırken yardımcı olamayacağım bir şey değil .bashrc
.
En büyük avantaj, komut satırınızın mod düzenlenmesidir. Vim'e aşina iseniz ve felsefesini seviyorsanız, faydaların açık olması gerekir. Eğer tecrübeli iseniz, parmağınızın kas hafızası, bash komutlarınızı yıldırım hızlarında düzenlemenizi sağlayacaktır.
Not : Modsal düzenlemeyi sevmiyorsanız, yine de (varsayılan) emacs modundan yararlanmayı öğrenmelisiniz. İşte bazı şık klavye kısayolları ile herhangi süreci üzerinde çalışacak readline
gibi bash
.
Eğer alışması halinde vi
, böylece kabuk editörü olarak vi moduna ayarlayın. Bu bariz bir sebep olurdu. Diğeri zaman olduğu bash
bazı işletim sistemleri (AIX, Solaris gibi çoğunlukla UNIX) varsayılan olarak mevcut değildir, bu nedenle kabuk geçmişi özelliği mevcut değildir, bu nedenle yolu için kabuk editörü ayarlayarak geçmiş komutları almak vi
ve Esc, Ctrl+ Kveya Ctrl+L
Vim'in kısayollarını kullanarak komut satırında kolayca gezinmenizi ve düzenlemenizi sağlar, örneğin bir kelimeye doğru hızla gidin, bir kelimeyi silin.
Eğer çizginin sonuna gitmek gerektiğinde varsayılan kısayolları olarak, yapmanız gerekenler Ctrl+ eoysa set -o vi
, sadece vurmak $
vim gibi.
Muhtemelen partiye geç kaldım, ama benim için vi modunu kullanmak etkileşimli komut dosyaları oluştururken daha fazla…
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
Neyin karmaşık olabileceğine dair çok basit bir örnek .. kullanmak ESCkvsizi senaryoyu değiştirebileceğiniz bir vi oturumuna sokar ve sonra :wq
çalıştırır.
vi
modunu kullanmanın iyi bir örneği olabilir , ancak kötü bir bash kodu örneği. (1) Çıktıyı ls
girdi olarak başka bir işlemeye kullanmak kötü bir fikirdir. (2) $(…)
Komut değiştirme için `…`
sözdiziminin , sözdiziminden daha okunaklı olduğu kabul edilir . (3) Olmamak için iyi bir nedeniniz yoksa ve ne yaptığınızı bildiğinizden emin olmadığınız sürece, her zaman kabuk değişkenlerini belirtmelisiniz .