Я бачив багато розробників, які використовують цю команду, щоб встановити параметр vi. Я ніколи не розумів реального використання цього?
Що використовує команди bash, яку допомогу надає перемикання на vi?
Я бачив багато розробників, які використовують цю команду, щоб встановити параметр vi. Я ніколи не розумів реального використання цього?
Що використовує команди bash, яку допомогу надає перемикання на vi?
Відповіді:
Встановивши редагування читальної лінії на emacs (за замовчуванням) або vi ( set -o vi
), ви по суті стандартизуєте свої команди редагування в оболонці та редакторі за вибором 1 .
Таким чином, якщо ви хочете відредагувати команду в оболонці, ви використовуєте ті самі команди 2, що і в текстовому редакторі. Це означає, що потрібно запам’ятати один синтаксис команд і (якщо цього не було достатньо переваги), ймовірно, зробить ваше редагування в обох середовищах швидшим і менш схильним до помилок ...
Ви можете додатково використовувати цей взаємозв'язок у режимі vi-mode, витягнувши будь-яку команду з історії вашої оболонки, натиснувши Escapeна вхід в режим команд, а потім натиснувши v, що відкриє ваш $ EDITOR командою, завантаженою для більш складного редагування з повною потужністю vim. Після того, як ви закінчите редагування команди на ваше задоволення, :wqі команда виконується назад у вашій оболонці.
1. Припустимо, звичайно, що ви використовуєте Emacs або Vi / m в якості свого редактора.
2. Або, точніше, їх підмножина ...
set -o vi
яку більшість людей не знає. Це особливо справедливо, якщо ви хочете кілька разів видавати одну і ту ж команду з різними аргументами (як кілька команд командного рядка).
set -o vi
. У налаштуваннях за замовчуванням set -o EMACS
Cx, Ce відкриє вікно emacs (або те $EDITOR
, якщо воно встановлено), в якому ви можете редагувати команду перед її запуском.
Режим Vi - це величезне покращення юзабіліті, якщо ви використовуєте мобільний клієнт SSH, наприклад ConnectBot для Android.
Це пов’язано зі зменшеною залежністю від клавіш-модифікаторів.
Vim набагато простіше користуватися віртуальною клавіатурою на смартфоні чи планшеті, ніж ... все інше, включаючи вбудовані способи редагування, вбудовані в інтерфейс Android. За іронією долі, простіше редагувати джерела C з Vim на сесії SSH, ніж редагувати, скажімо, миттєве повідомлення з власним віджетом для редагування платформи для цієї мети.
Режим Shell vi приносить аналогічну перевагу.
Це дозволяє редагувати матеріали в командному рядку, використовуючи режими vi та операції.
Приклад допоможе зробити це набагато зрозумілішим:
Ви вводите cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
але ви отримаєте помилку - ви повинні набрали file1.txt
НЕfile1.xt
Без цього параметра ви натискаєте стрілку вгору, а потім натискаєте стрілку вліво і нехай вона повторюється протягом ... 35 разів, поки ви не дістанетесь до .xt
і потім не наберете додатковий t
. Всього натискань клавіш: 37 .
За допомогою цього набору параметрів ви можете (наприклад) один раз натиснути стрілку вгору, потім Вийти для командного режиму, 0, щоб перейти до початку рядка, а потім /xt[return]
перейти до xt
та, а потім ви можете i
ввести режим вставки та ввести відсутнє t. Це може здатися шалено складним в деяких аспектах, але якщо ви користувач vim, ці команди вже дуже добре відомі. Всього натискань клавіш: 9
Alt+B
s або a Ctrl+Alt+]
.
в режимі Emacs, тому це не здається мені вагомим прикладом.
Up
, Ctrl+Alt+]
, .
, Right
, t
, Enter
= 8. Vi режим: Up
, F
, .
, a
, t
, Enter
= 7 :)
Esc
там теж було, це мертве тепло.
Я не впевнений, чи є пряма перевага. Я vi
користувач більше 20 років. Я також screen
користувач ще довше та інших програм, які використовують vi
клавіші. Мені природно, що я віддаю перевагу встановленню режиму "vi" в bash. Але я також працюю на сотнях серверів у своїй роботі, більшість налаштована на режим "emacs" за замовчуванням. Тому мені потрібно використовувати обидва режими. Але це справді лише питання переваги.
ssh
ing. Звичайно, це не допомагає, коли я локально використовую машину, на якій немає своїх .bashrc
речей.
Основна перевага - модальне редагування вашого командного рядка. Якщо ви знайомі з Vim і вам подобається його філософія, переваги повинні бути очевидними. Якщо ви зіткнулися з цим, м’язова пам’ять вашого пальця змусить вас редагувати свої баш-команди з блискавичною швидкістю.
Примітка : Якщо ви не любите модальне редагування, вам все одно слід навчитися використовувати переваги (за замовчуванням) emacs-режиму. Ось декілька вишуканих комбінацій клавіш, які працюватимуть на будь-якому процесі readline
, наприклад bash
.
Якщо ви звикли vi
, значить, ви встановите його на режим vi в якості редактора оболонок. Це була б очевидна причина. Інший - коли bash
недоступний за замовчуванням в деяких ОС (переважно UNIX, таких як AIX, Solaris), тому функція історії оболонок недоступна, тому спосіб отримання попередніх команд, встановивши редактор оболонки на vi
, і Esc, Ctrl+ Kабо Ctrl+L
Це дозволяє вам легко переміщуватися та редагувати командний рядок за допомогою ярликів vim, наприклад, швидко перейти до одного слова праворуч, видалити слово.
За ярликами за замовчуванням, коли вам потрібно перейти до кінця рядка, ви повинні Ctrl+ e, тоді як з set -o vi
, ви просто натискаєте $
, як у vim.
Можливо, пізно на вечірку, але для мене використання режиму vi стосується більше під час створення інтерактивних скриптів .. наприклад
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
дуже простий приклад того, що може бути досить складним .. за допомогою ESCkvперетворює вас на VI сесію, де ви можете змінювати сценарій, а потім :wq
і він запускається.
vi
режимі, але це поганий приклад bash-коду. (1) Використання результатів з ls
вхідних даних для будь-якого іншого виду обробки є поганою ідеєю. (2) $(…)
Синтаксис підстановки команд вважається більш читабельним, ніж `…`
синтаксис. (3) Ви завжди повинні цитувати змінні оболонки, якщо у вас немає вагомих причин цього не робити, і ви впевнені, що знаєте, що робите.