Viděl jsem mnoho vývojářů používajících tento příkaz k nastavení možnosti vi. Nikdy jsem nerozuměl skutečnému využití tohoto?
Jaká pomoc při přechodu na vi poskytuje při použití bash příkazů?
Nastavením úpravy readline na emacs (výchozí) nebo vi (set -o vi
) v podstatě standardizujete své editační příkazy napříč Shellem a vaším editorem1.
Pokud tedy chcete upravit příkaz v prostředí Shell, použijete stejné příkazy2 že byste byli v textovém editoru. To znamená, že si musíte pamatovat pouze jednu syntaxi příkazů a (pokud by to nebylo dost výhodné), pravděpodobně by vaše úpravy v obou prostředích byly rychlejší a méně náchylné k chybám ...
Tento vztah můžete dále využívat ve vi-režimu vytažením jakéhokoli příkazu z vaší historie Shell a zasažením Escape vstoupit do příkazového režimu a poté zasáhnout v, který otevře váš $ EDITOR příkazem načteným pro složitější úpravy s plnou silou vim. Jakmile dokončíte úpravu příkazu k vaší spokojenosti, :wq a příkaz je proveden zpět ve vašem shellu.
1. Samozřejmě za předpokladu, že jako editor použijete Emacs nebo Vi/m.
2. Nebo přesněji jeho podmnožina ...
Režim Vi je obrovské zlepšení použitelnosti, pokud používáte mobilní klient SSH, jako je ConnectBot pro Android.
Důvodem je snížená závislost na modifikačních klávesách.
Vim je mnohem jednodušší používat s virtuální klávesnicí na smartphonu nebo tabletu než ... cokoli jiného, včetně nativních metod editace zabudovaných do uživatelského rozhraní Android UI. Je ironií, že je snadnější editovat C zdroje s Vim v relaci SSH, než editovat, řekněme, okamžitou zprávu s vlastní úpravou widgetu pro tento účel.
Režim Shell vi přináší podobnou výhodu.
Umožňuje upravovat obsah příkazového řádku pomocí režimů a operací vi.
Příklad vám to pomůže vyjasnit:
Napíšete cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
ale zobrazí se chyba - měli jste zadat file1.txt
ne file1.xt
Bez Tato sada možností stisknete šipku nahoru a potom šipku doleva a necháte ji opakovat ... 35krát, dokud se nedostanete k .xt
a potom napíšete extra t
. Celkový počet úhozů: 7.
S tuto sadu možností můžete (například) jednou stisknout šipku nahoru, poté Escape pro příkazový režim, 0 pro přechod na začátek řádku a poté /xt[return]
se dostanete do xt
a pak můžete do režimu vkládání zadat i
a napsat chybějící t. V některých ohledech se to může zdát šíleně komplikované, ale pokud jste uživatel vim, jsou tyto příkazy již dobře známy. Celkový počet úhozů: 9
Nejsem si jistý, zda existuje přímá výhoda. Byl jsem uživatelem vi
více než 20 let. Jsem také uživatelem screen
ještě déle a dalších programů, které používají klávesy vi
. Je pro mě přirozené raději nastavit režim „vi“ na bash. Ve své práci ale také pracuji na stovkách serverů, většina z nich je nastavena na výchozí režim emacs. Takže musím použít oba režimy. Ale je to opravdu jen otázka preference.
Hlavní výhodou je modální úprava vašeho příkazového řádku. Pokud znáte Vima a máte rádi jeho filozofii, musí být výhody zřejmé. Pokud s tím máte zkušenosti, svalová paměť vašeho prstu vám umožní upravit vaše bash příkazy rychlostí blesku.
[~ # ~] nb [~ # ~] : Pokud se vám nelíbí modální úpravy, měli byste se naučit využívat výhod (výchozí ) emacs-mode. Zde je několik šikovných klávesových zkratek , které budou pracovat na jakémkoli procesu s readline
, jako bash
.
Pravděpodobně pozdě na párty, ale pro mě je použití režimu vi více o vytváření interaktivních skriptů
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
velmi jednoduchý příklad toho, co by mohlo být docela komplikované .. použití ESCkv vás přenese do relace vi, kde můžete skript upravit, a poté :wq
a běží.
Pokud si zvyknete na vi
, nastavíte jej jako režim editoru do režimu vi. To by byl jasný důvod. Druhým je, když bash
není ve výchozím nastavení k dispozici v některých operačních systémech (většinou UNIX jako AIX, Solaris), takže funkce historie prostředí není dostupná, takže způsob, jakým získáváte předchozí příkazy nastavením prostředí editor pro vi
a Esc, Ctrl+K nebo Ctrl+L
Umožní vám snadno procházet a upravovat příkazový řádek pomocí zkratek vim, např. rychle přejít na jedno slovo vpravo, odstranit slovo.
Ve výchozím nastavení, pokud potřebujete přejít na konec řádku, musíte Ctrl+e, zatímco s set -o vi
, stisknete $
jako vim.