Командный режим и режим вставки



Редактор vi открывается в командном режиме. В командном режиме вы можете вводить команды. Некоторые команды приведу вас в режим вставки. В режиме вставки вы можете ввести текст. Клавиша выхода вернет вас в командный режим.

Таблица 18.1. Работа в командном режиме

key action
Esc Задает vi(m) в командном режиме

Печать (a A i I o O)

Разница между A i I o и O это место, откуда вы можете начать печатать. С «а» вы начнете печатать после текущего символа, а с «А» начнете в конце текущей строки. С «i» вы начнете печатать до текущего символа, а с «I» начнете в начале текущей строки. С «о» вы начнете печатать с новой строчки после текущей строки  и с «O» вы начнете печатать на новой строке до текущей строки.

Таблица 18.2. переход в режим вставки

command action
a вы начнете печатать после текущего символа
A вы начнете печатать начнете в конце текущей строки
i вы начнете печатать до текущего символа
I вы начнете печатать начнете в начале текущей строки
o вы начнете печатать с новой строки после текущей строчки  
O вы начнете печатать на новой строке до текущей строки

 

Замена и удаление символов (r x X)

В командном режиме (это не сложно нажать кнопку esc несколько раз), вы можете использовать х, чтобы удалить текущий символ.  X (или shift+х) удаляет символ слева от курсора. Кроме того, когда вы в командном режиме, вы можете использовать клавишу r, это замена одного символа. Ключ r перенесет вас в режим вставки только одним нажатием клавиши, и вернет вас немедленно в командный режим.

Таблица 18.3. Замена и удаление

command action
x Удаляет символ до курсора
X Удаляет символ после курсора
r Заменяет символ до курсора
p Вставка после курсора (здесь последний удаленный символ)
xp Замена одного символа на другой

 

Отменить и повторить (u .)

Находясь в командном режиме, вы можете отменить свои ошибки с помощью команды «u». Вы можете повторить свою ошибку второй раз с помощью «.» (другими словами «.» повторит вашу последнюю команду).

Таблица 18.4. Отменить и повторить

command action
u Отменяет последнее действие
. Повторяет последнее действие

 

Вырезать, копировать и вставить строчки (dd yy p P)

В командном режиме, dd  вырежет текущую строку. уу скопирует текущую строку. Вы можете вставить последние скопированные или вырезанные строки после (р) или до (Р) текущей строки.

Таблица 18.5. Вырезать, копировать и вставить строчки

command action
dd Вырежет текущую строку
yy Скопирует текущую строку
p Вставить после текущей строчки
P Вставить до текущей строчки

 

Вырезать, копировать и вставить строчки (3dd 2yy)

В командном режиме, перед вводом dd или уу, вы можете ввести номер, это повторит команду несколько раз. Таким образом, 5dd вырежет 5 линий и 4yy  скопирует (yank) 4 строки. Это будет отмечено в vi в нижнем левом углу, как "4 line yanked".

Таблица 18.6. Вырезать, копировать и вставить строчки

command action
3dd Вырежет 3 строки
4yy Скопирует 4 строки

 

18.7. Начало и конец строки (0 или ^ и $)

Находясь в командном режиме, «0» или «^» (домик, каретка) перенесут вас в начало строки, в то время как «$» поставит курсор в конец текущей строки. Вы можете использовать «0» и «$» с командой «d», d0 удалит все символы от начала строки до текущего символа. Также d$ удалит все от текущего символа до конца строки. Похожим образом y0 и y$ скопируют начало и конец текущей строки.

Таблица 18.7 . Начало и конец строки

command action
0 Перенесет вас в начало строки
^ Перенесет вас в начало строки
$ Перенесет вас в конец строки
d0 Удалит все символы от начала строки до текущего символа
d$ Удалит все от текущего символа до конца строки

 

 

Объединения двух и более линий (J)

Находясь в командном режиме, нажмите J,выдобавите следующую строку после текущей строчки. С помощью yypвыдублируете строку, а сddpпоменяете строки местами.

Таблица 18.8. Объединения двух линий

command action
J Добавить строку после текущей строки
yyp Дублирует текущую строку
ddp Поменять строки местами

 

Слова (w b)

Находясь в командном режиме, с помощью wвы переместись на следующее слово, а сbна предыдущее слово.w и b можно также использовать с d и y чтобы копировать и вставлять слова (dw db yw yb).

Таблица 18.9. Слова

command action
w Перенесет вас к следующему слову
b Перенесет вас к предыдущему слову
3w Перенесет вас на 3 слова вперед
dw Удалит одно слово
yw Скопирует одно слово
5yb Скопирует 5 предыдущих слов
7dw Удалит 7 следующих слов

 

18.10. Сохранить (или нет) и выход (:w :q :q! )

Нажмите «:» это откроет вам инструкции по vi (технически говоря, ввод двоеточия откроет вам exeditor). :wзапишет (сохранит) файл, :qвыйти из неизмененного файла без сохранения, и :q! выйти из vi без изменений. :wqсохранить и выйти, тоже самое делает команда ZZв командном режиме.

 

Таблица 18.10. Сохранить и выйти vi

command action
:w Запишет (сохранит) файл
:w fname Сохранит как fname
:q Выход
:wq Сохранить и выйти
ZZ Сохранить и выйти
:q! Выход без изменений
:w! Сохранить в нередактируемый файл

 

Последняя команда немного особенная. С :w! viпопытается при помощи chmodполучить права на запись (работает, если вы владелец) и использует chmod,чтобы вернуть права обратно при удачной записи. Это должно всегда работать в корне системы (и файловая система доступна для записи).

Поиск (/ ?)

Находясь в командном режиме,  набирание «/» позволит вам искать в vi строки (может быть обычным выражением). Набрав /foo, вы начнете поиск после строчки foo и

набрав ?bar начнете поиск перед строчкой bar.

Таблица 18.11. Поиск (/ ?)

command action
/string Поиск после строчки string
?string Поиск до строчки string
n Перейти к следующему вводу поиска
/^string Начать поиск string с начала строки
/string$ Начать поиск string с конца строки
/br[aeio]l Поиск bral brel bril и brol
/\<he\> Искать слово he(исключая here и the)

 

18.12. Замена ( :1,$ s/foo/bar/g )

Заменяет все входящие строчки с foo на bar, для начала переключитесь на ex mode с помощью «:». Затем скажите vi какие строки вы будете использовать, к примеру, 1,$ заменит все строчки от первой и до последней. Вы можете написать 1,5, это заменит 5 первых строчек. s/foo/bar/g заменит все входящие foo на bar.

Таблица 18.12. Замена

command action
:4,8 s/foo/bar/g Заменить все foo на bar с 4 по 8 строчки
:1,$ s/foo/bar/g Заменить все foo на bar по всем строчкам

 

18.13. Чтение файлов (:r :r !cmd)

Находясь в командном режиме, :r foo прочитает файл с именем foo, :r !foo выполнит команду foo. Результат поместится в текущее местоположение. Таким образом :r !ls поместит листинг текущего каталога в ваш текстовый файл.

 

Таблица 18.13. Чтение файлов

command action
:r fname (Чтение) файла fname и вставка содержимого
:r !cmd Выполнить и вывести cmd

 

Текстовые буферы

В vi хранится 36 буферов для хранения текста. Вы можете использовать их с помощью символа «”»

Таблица 18.14. Текстовые буферы

command action
"add Удаление текущей строчки и копирование ее в буфер а
"g7yy Скопировать 7 строчек в буфер g
"ap Вставка текста из буфера а

 

Несколько файлов

Вы можете редактировать несколько файлов с vi. Вот несколько советов.

Таблица 18.15. Несколько файлов

command action
vi file1 file2 file3 Выбрать для редактирования 3 файла
:args Списки файлов и пометки на активных файлах
:n Начать редактировать следующий файл
:e Переключиться на следующий отредактированный файл
:rew Переместить файл указатель на первый файл

 

Аббревиатуры

С помощью :abвы можете создавать аббревиатуры в vi. Используйте :unna,чтобы убрать аббревиатуру.

Таблица 18.16. Аббревиатуры

command action
:ab str long string Аббревиатура strдля 'long string'
:una str Убрать аббревиатуру str

 

Горячие клавиши

Как и для аббревиатур, вы можете использовать горячие клавиши с :map для командного режима и :map! для режима вставки.

Этот пример показывает, как установить на F6 функциональную клавишу для переключения между set numberи set nonumber. <bar> разделяет две команды, set number!меняет состояние и set number? сообщает о текущем состоянии.

:map <F6> :set number!<bar>set number?<CR>

Настройка параметров

Некоторые параметры, которые можно настроить в vim.

 

:set number ( also try :se nu )

:set nonumber

:syntax on

:syntax off

:set all (list all options)

:set tabstop=8

:set tx (CR/LF style endings)

:set notx

Вы можете настроить следующие параметры (и многое другое) в /.vimrcдля vim или ~/.exrcдля vi.

paul@barry:~$ cat ~/.vimrc

set number

set tabstop=8

set text

map <F6> :set number!<bar>set number?<CR>

paul@barry:~$

Часть VI. Создание скриптов

Оболочки, такие как Bash и Korn имеют поддержку программных конструкций, которые могут быть сохранены в виде скриптов. Эти скрипты в свою очередь, стали командами оболочки. Многие команды в Linux, это скрипты. Скрипты профиля пользователя выполняются, когда пользователь входит в систему и, тогда, выполняются скрипты инициализации, когда daemon остановлен или запущен. Это означает, что системному администратору необходимы базовые знания скриптов, чтобы понять, как запускаются сервера и приложения, обновления, модернизация, исправления, поддерживание, настройки и удаление, а также понять, как построена среда пользователя. Целью этой главы является дать вам достаточно информации, чтобы иметь возможность читать и понимать скрипты. Чтобы не стать создателем сложных скриптов.

Предпосылки

Вам следует прочитать и понять Часть III расширения оболочки и Часть IV Пайпы и командыдо того, как начнете читать эту главу.

 

Hello World

Как и в каждом курсе программирования, мы начнем с простого скрипта hello_world. Следующий скрипт выведет Hello World.

echo Hello World

После создания этого простого скрипта в vi или echo, вам нужно прописать chmod +x

hello_world,чтобы сделать скрипт исполняемым. И если вы не добавляете скрипты к указанию пути, вы должны ввести путь к скрипту для оболочки, чтобы вы могли найти его.

[paul@RHEL4a ~]$ echo echo Hello World > hello_world

[paul@RHEL4a ~]$ chmod +x hello_world

[paul@RHEL4a ~]$ ./hello_world

Hello World

[paul@RHEL4a ~]$

She-bang

Чуть-чуть улучшим наш пример, поставив #!/bin/bash на первой строке скрипта. #! называется she-bang (иногда называется sha-bang), где she-bang -первые два символа сценария.

#!/bin/bash

echo Hello World

Вы никогда не можете быть уверены, в какой оболочке работает пользователь. Скрипт, который работает безупречно в Bash, может не работать в ksh, csh, или dash. Задав оболочку для запуска сценария в определенной оболочке, вы можете начать свой скрипт с she-bangизатем запустить оболочку. Это скрипт будет работать в оболочке Bash.

#!/bin/bash

echo -n hello

echo A bash subshell `echo -n hello`

Этот скрипт будет работать в оболочке Korn (если /bin/kshне жесткая ссылка на/bin/bash). /etc/shellsфайл содержащий список оболочек вашей системы.

#!/bin/ksh

echo -n hello

echo a Korn subshell `echo -n hello`

Комментарии

Ещё чуть-чуть улучшим наш пример и добавим в него комментарии.

#!/bin/bash

#

# Hello World Script

#

echo Hello World

Переменные

Вот простой пример переменной в скрипте.

#!/bin/bash

#

# simple variable in script

#

var1=4

echo var1 = $var1

Скрипты могут содержать переменные, но так как эти скрипты выполняются в своей оболочке, то переменные, не доживают до конца сценария.

[paul@RHEL4a ~]$ echo $var1

[paul@RHEL4a ~]$ ./vars

var1 = 4

[paul@RHEL4a ~]$ echo $var1

[paul@RHEL4a ~]$

 

Источники скриптов

К счастью, вы можете заставить запустить скрипт в одной оболочке, это называется script sourcing.

[paul@RHEL4a ~]$ source ./vars

var1 = 4

[paul@RHEL4a ~]$ echo $var1

4

[paul@RHEL4a ~]$

Приведенный выше пример идентичен нижнему.

[paul@RHEL4a ~]$ . ./vars

var1 = 4

[paul@RHEL4a ~]$ echo $var1

4

[paul@RHEL4a ~]$


Дата добавления: 2018-04-05; просмотров: 456; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!