Bash `editor` komutu nedir?


6

Mevcut kullanıcının favori metin editörünü açmayı umarak açacak bir komut arıyordum, çünkü bazı komutları bir blogda komutlarla yazıyorum. Gibi bir komut bekliyordum editve buldum editor. Benim için istediğime yakın olan terminalde vim başladı; Ben vim-gtk kullanıyorum. Editörün vim-gtk kullanmasını sağlamak için bir yol aramaya başladım ve bir ortam değişkenini açıklayan bu soruyu buldum $EDITOR, ancak editorkomutla bile ilgili olduğundan emin değilim . Denedim man editor, ama bu sadece vim manpage'i çekti.

Seçtiğim editorbir metin editörünü nasıl kullanabilirim, yoksa farklı bir komut mu kullanmalıyım?

Yanıtlar:


6

Bu bir Debian-ism'dir (ve bu nedenle Ubuntu, Nane, vs.'de görünür). Adı verilen bir bağlantı kurdular editor. Aşağıdaki gibi geri izleyebilirsiniz:

$ which editor
/usr/bin/editor

$ ls -l /usr/bin/editor 
lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome

$ ls -l /usr/bin/vim.gnome
-rwxr-xr-x 1 root root 2403392 Oct 26  2012 /usr/bin/vim.gnome

Yani editorbunun sadece çalıştırılabilir dosyaya bir Unix bağlantısı olduğunu görebilirsiniz vim.gnome.

Kullanarak editor?

editorStandart olarak kabul edeceğim şey olmadığı sürece, kullanıcılar için anlamlı bir şekilde bu yönde hareket edeceğimi sanmıyorum .

Ek olarak ayarlayabilirsiniz $EDITOR, istediğiniz herhangi bir yere çevre değişkeni vim, gedit, emacsvb Ama bu değişken yalnızca aşağıdaki gibi araçlarla tarafından kullanılmak üzere garanti edilir sudo, gitve subversionbu özellikle değişken kullanmak haline bağlı şekilde tasarlanmıştır $EDITOR.

Uygulama fikirleri

Sadece kendi seçtiğiniz bir takma adı kurardım ve kullanıcılarına kendi $HOME/.bashrcdosyaları aracılığıyla kendilerine X takma adı olarak kullanabileceklerini söylerim ya da dosyada bir takma ad X olarak bir sistem yapılandırması /etc/profile.d/our_aliases.sholarak kurardım.

Ya da sadece sistem sağladığını kullanıcıları söyleyebilirdi gedit, gvim, vim, emacsvb ve şeker kaplama kesti ve bat derhal bu şeyleri onlara öğretmek.

Veya basit komutları ve çeşitli görevleri nasıl yerine getirebileceklerini bir kabuk içinde bir /etc/help.txtkomutla help( alias help="less /etc/help.txt") çalıştırabilecekleri bir metin dosyası sağlayabilirsiniz. Bu yaklaşım, zaman içinde yeni özellikler veya ipuçlarıyla zaman geçtikçe yardımı özelleştirmenizi sağlar ve onlara editorkolaylık komutundan daha fazlasını verir .


Ya, kullanıcılar editörlerinin ne dendiğini bilirler ve ben onlara sadece bir kod örneği göstermek yerine belirli bir dosyayı düzenlemelerini söyleyeceğim. Kod örnekleri ile bir rulo oldu ve biraz bilgiçlik alıyorum anladım. Ubuntu'nun $EDITORdeğişkeni ayarlamaması çok kötü , şimdi buna veya editorsembolik bağlantıya güvenemiyorum .
Dan Ross

4
s/Ubuntu/Debian/g
Stéphane Chazelas

standartlar , iç çekiş ...
Dan Ross

6

Editör programı, bazı programları tarafından bir dosyayı düzenlemelerini söylediğinizde çağırır. Ortam değişkenini kendiniz ayarlamalısınız.

Csh veya tcsh kullanıyorsanız, kabuk isteminde:

setenv EDITOR vim

Bash veya ksh kullanıyorsanız, şunu girin:

EDITOR=vim; export EDITOR

("Vim" i kullanmak istediğiniz düzenleyiciyle değiştirin.)

EDITORDeğişken bazı uygulamalar editörü çağırmak için varsayılan olarak ihtiyaç biridir. VISUALEkran odaklı editörü belirtmek için kullanılan başka bir değişken var . Genellikle onu EDITORdeğişkenle aynı değere ayarlamak istersiniz . Başlangıçta EDITORed (satır tabanlı editör) VISUALolarak ayarlanmış ve vi (ekran tabanlı editör) olarak ayarlanmış olacaktı.

VISUAL="vim"; export VISUAL
VISUAL="$EDITOR"; export VISUAL  #even better

Bunu yaptığınızda, metin editörlerini kullanan çoğu Unix programı ayarladığınız editörü kullanır. Yukarıdaki komutları izleyerek, yalnızca geçerli hesaplama oturumu için varsayılan düzenleyiciyi ayarlayacaksınız. Bu değişiklikleri kalıcı hale getirmek için yukarıda açıklanan uygun komutları dosyalarınıza .loginveya .cshrcdosyalarına (csh veya tcsh kullanıcıları için) veya .profiledosyanızı (bash veya ksh kullanıyorsanız) yerleştirmeniz gerekir.

Emacs kullanıyormuş gibi yaparsanız, başka bir ortam değişkeni daha vardır. Bu ALTERNATE_EDITORve aynı etkiye sahip, ancak Emacs --alternate-editorseçeneği ile çağrıldığında kullanılır .

Gönderen GNU Emacs Manuel :

Seçenek bir komut dosyasında --alternate-editor=commandçalışırken kullanışlıdır emacsclient. emacsclient Emacs ile bağlantı kurulamazsa çalıştırılacak komutu belirtir . Örneğin, EDITORortam değişkeni için aşağıdaki ayar Emacs çalışmıyor olsa bile her zaman bir editör verir:

EDITOR="emacsclient --alternate-editor vi +%d %s"

3
Söylemek shmantıklı değil. shgenellikle sistemin kabuğudır. Thomson kabuğu, daha sonra Bourne kabuğu ve bugünlerde çoğu sistemde POSIX özelliğini uygulayan bir kabuk ya da bir başkasıydı sh. export EDITOR=vimSözdizimi Bourne ne de Thomson POSIX, ama olmaz. İçerdiği export VISUAL=$EDITORişler bashve bazı uygulamaları ksh. export VISUAL="$EDITOR"Diğer kabuklara ihtiyacın var . VISUAL=$EDITOR export VISUALBourne kabuğu da dahil olmak üzere tüm Bourne benzeri kabuklarda çalışacaktır.
Stéphane Chazelas

Böyle EDITORbir çok kelimeli değere ayarlamak yaygın ve kabul edilir mi? Eğer öyleyse, güvenle kullanamıyorum which "$EDITOR"veya var which $EDITORolup olmadığını kontrol edemiyorum .
joeytwiddle

3

editorOrtam değişkeninde belirtmeniz gerekir EDITOR. İçine aşağıdaki komutu ekleyin .profile:

export EDITOR=editor

İsterseniz vimvarsayılan editörü olarak, bunun yerine katacak

export EDITOR=vim

Kişisel tercih: Editörün mutlak yol ismini ortam değişkeninde kullanıyorum. Örneğin,

export EDITOR=/usr/bin/vim


1

editorKomut ubuntu özeldir. Taşınabilir değil, hatta yaygın (ubuntu dışında). Komut, kullanıcı başına değil, sistem genişliğinde de ayarlanmıştır. Çalışma şekli olmasıdır /usr/bin/editorsistemde bir editör sadece sembolik bağdır. Gibi tüm kullanıcılar için aynıdır.

$EDITOROrtam değişkeni oldukça standarttır. Kullanıcının bir şeyi düzenlemesi gereken birçok program tarafından kullanılır. Bu nedenle, kullanıcının editörünü çağırmak istediğinizde kullanmanız gereken bu değişkendir.


4
Ubuntu'ya özgü değildir, Debian'dan gelir ve Debian'ın alternatif mekanizmasını kullanır . Sadece Ubuntu'da değil, tüm Debian türevlerinde mevcuttur.
Stéphane Chazelas

0

Senaryomda kullandığım şey bu:

# Find a suitable text editor
editor="$VISUAL"
[ -z "$editor" ] && editor="$EDITOR"
[ -z "$editor" ] && which editor >/dev/null && editor=editor
[ -z "$editor" ] && which nano   >/dev/null && editor=nano
[ -z "$editor" ] && which vi     >/dev/null && editor=vi
[ -z "$editor" ] && editor=no_editor_found

# Use the editor we found
$editor "$filename"

$editorYukarıdaki kesin örneğin işe yarayacağından emin olmak için son çağrıya alıntılar yapmadım.

Bu nedenle, her zaman için bir değer belirlemenin önemli olduğunu düşünüyorum editor, aksi takdirde son satır istemeden $ dosyaadı yürütebilir . Benim durumumda seçtim, no_editor_foundama eşit olarak picoveya edorada kullanabilirsiniz .

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.