Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Распространённые операции: редактируем файлы с "vim"

          Написано: Giansante Gabriele, 2001      Обновлено: 06/10/2016      Перевод Марины Пыльник

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

Одним из популярных редакторов, которым снабжены все дистрибутивы Linux, является редактор vim (VIM - Vi IMproved, Manpage di VIM (1) ). Входя в Linux RedHat, Linux Mandrake и другие дистрибутивы, он до сих пор представляет собой самый широко используемый редактор в среде Linux, особенно в дистанционном использовании, благодаря своим большим возможностям и малым занимаемым ресурсам. Вообще-то,"vim" - это интерфейс текстового редактора "ed"

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

"vi" имеет два основных режима работы: режим ввода команд (командный режим,который установлен по умолчанию) и режим написания или изменения текста(содержимого), так называемый текстовый режим. Имеется, например, ещё и визуальный режим, о котором, кстати, я немного(вкратце) расскажу ниже.
Командный режим используется для ввода специальных команд, таких как сохранение файла, отмена изменений текста, либо, например, поиск строки, подстроки, перемещение на нужную строку, поиск совпадения для открытия(закрытия) скобки и т.д.
А текстовый режим нужен для создания или изменения содержимого в файле путём непосредственного написания.
Практически всё, что пишется в командном режиме интерпретируется как команда "vi", в то время как то, что пишется в другом режиме воспринимается как текст.

Предположим, что мы открываем файл "test.conf" с vim: "vim test.conf".
Как только входим в vim, мы сразу же оказываемся в режиме ввода команды с первой строки открытого файла.

Изменение режима работы

В зависимости от режима, в котором мы находимся, возможно выполнять следующие действия

Клавиша Новый режим Результат
Режим ввода команд
i написание/ввод Возникнет надпись "INSERT" и появится возможность ввести текст на указанную курсором позицию без замены уже существующего текста, если таковой уже введён
INS написание/ввод Аналогично "i"
INS INS
или
i INS
написание/замена Появится надпись "REPLACE" и можно будет ввести текст на указанную курсором позицию заменив в этом случае уже существующий текст
o
(буква)
написание/ввод Добавится пустая строка под той, на которой находится курсор, в режиме написание/ввода теста (смотри клавишу "i")
O
(буква)
написание/ввод Как "o", но при этом появится строка над той, где находится курсор
a написание/замена Входит в режим написание/ввод и можно начать ввод текста после символа, на котором находится курсор
A написание/ввод Входит в режим написание/ввод и можно начать писать в конце строки, на которой находится курсор
s написание/ввод Входит в режим написание/ввод и заменяет символ, находящийся на позиции курсора, тем текстом, который будет набран
S написание/ввод Входит в режим написание/ввод и заменяет строку, на которой находится курсор, текстом который будет набран
C написание/ввод Входит в режим написание/ввод и будет удалён текст начиная с места нахождения курсора и до конца строки
v визуальный режим Появится надпись "VISUAL" и можно будет выполнять такие действия как выбор текста, копирование, вставка, удаление. Некоторые команды относящиеся к этому режиму будут описаны далее
Текстовый режим
ESC команды Переход в режим командного ввода. Здесь не будет более возможно вводить текст набирая его с клавиатуры до последующего возвращения в текстовый режим


Перемещения внутри текста

Для перемещения внутри текста, в командном режиме нажать клавиши (или набрать вручную команды) по следующей схеме:

Клавиша Команда Результат
Режим введения команды
СТРЕЛКА ВВЕРХ
или
k
Смещает курсор вверх
СТРЕЛКА ВНИЗ
или
j
Смещает курсор вниз
СТРЕЛКА ВПРАВО
или
l
Смещает курсор вправо
СТРЕЛКА ВЛЕВО
или
h
Смещает курсор влево
HOME
или
^
Смещает курсор на начало строки
END
или
$
Смещает курсор в конец строки
PAGE UP Быстрое смещение курсора вверх (по целой странице)
PAGE DOWN Быстрое смещение курсора вниз (по целой странице)
w Смещает курсор на начало следующего слова
b Смещает курсор на начало предыдущего слова
e Смещает курсор на конец слова, на котором находится курсор
( Смещает курсор на начало предыдущей фразы. Внимание: фраза всегда заканчивается точкой и последующим пробелом
) Смещает курсор на конец следующей фразы. Внимание: фраза всегда заканчивается точкой и последующим пробелом
G Смещает курсор в конец документа
:<num> Размещает курсор на строке номер "<num>" (целое число). Нажать "ENTER" после написания команды
<num>G Как ":<num>"
Текстовый режим
СТРЕЛКА ВВЕРХ Смещает курсор вверх
СТРЕЛКА ВНИЗ Смещает курсор вниз
СТРЕЛКА ВПРАВО Смещает курсор вправо
СТРЕЛКА ВЛЕВО Смещает курсор влево
HOME Смещает курсор на начало строки
END Смещает курсор на конец строки
PAGE UP Быстрое смещение курсора вверх (сразу на целую страницу)
PAGE DOWN Быстрое смещение курсора вниз (сразу на целую страницу)


Функции редактирования

Удаление текста, копирование, вставка, и т.п., всё это классические функции редактирования.
Из командного режима, нажать клавиши (или набрать вручную команды) по следующей схеме:

Клавиша Команда Результат
Режим ввода команды
d<num>d Удаляет "<num>" (целое число) строк начиная с той, где находится курсор
dd Удаляет строку, на которой находится курсор
DELETE
или
x
Удаляет символ на месте нахождения курсора
BACKSPACE Смещает курсор влево и удаляет новый символ на котором собственно и находится курсор ("BACKSPACE" это клавиша для удаления,обычно находится над "ENTER")
u Отменяет изменения в обратном хронологическом порядке, т.е. начиная с последней выполненной операции
CTRL+r Возвращает обратно то, что было отменено. Полезно, например, когда ошиблись отменить изменения с "u"
v Входит в визуальный режим. Можно будет выделять текст с места нахождения курсора перемещаясь клавишами движения (стрелки, клавиши "Page", и т.д.)
Визуальный режим
ESC
или
v
Прекращает работу визуального режима и выходит из него
y Копирует в буфер выделенный текст
x Вырезает выделенный текст и копирует его в буфер
p Вставляет на позицию курсора текст, вырезанный клавишей "x" или скопированный клавишей "y"
> Делает отступ выделенного текста один раз направо
< Делает отступ выделенного текста один раз налево
<num>> Делает отступ выделенного текста "<num>" (целое число) раз направо (например "3>" делает три отступа)
<num>< Делает отступ выделенного текста "<num>" (целое число) раз налево (например. "3<" делает три отступа)
Текстовый режим
DELETE Удалить символ на месте нахождения курсора
BACKSPACE Смещает курсор на один символ влево и удаляет символ, на котором собственно находится курсор ("BACKSPACE" это клавиша для удаления,обычно находится над "ENTER")


Команды относящиеся к файловой системе

Частью таких команд являются команды, относящиеся к сохранению, загрузке, вставки из внешнего файла, и т.д.
Для управления несколькими файлами используется буфер (буферный лист) с системой навигации от одного файла к другому.
Из Режима введения команд (командного режима), набрать одну из следующих комбинаций клавиш и нажать "ENTER" для получения указанного эффекта:

Команда Результат
:w Сохраняет файл. Обратите внимание на эту команду, т.к. "w" записывает файл даже когда не были внесены изменения
:w! Как "w", но делает "обязательным" сохранение(или хотя бы пытается), даже когда это не разрешено (например, файл только в режиме чтения)
:w <имяФайла> Сохраняет новый файл с именем "<имяФайла>"
:r <имяФайла> Вносит на текущую позицию курсора содержимое файла "<имяФайла>"
:r !<команда> Вносит результат системной команды "<команда>" на текущую позицию курсора. Например: ":r !ps -aux"
:badd <названиеФайла> Добавляет файл "<названиеФайла>" в буфер
:bnext Переходит на следующий файл в буфере
:bprevious Переходит на предыдущий файл в буфере
:files Показывает какие файлы находятся в буфере, присваивая каждому свой номер
:b<num> Переходит непосредственно на определённый файл из тех, которые находятся в буфере. Связь номер-файл может быть найдена с помощью ":files". <num> является номером файла
:bdelete <num> Удаляет файл под номером <num> из буфера. Связь номер-файл может быть найдена с помощью ":files"
:x Сохраняет файл и выходит из редактора
:q Выходит из редактора
:q! Выход из редактора. Обратите внимание на то,что несохранённые изменения могут быть утеряны. В отличии от "q", не будет запроса сохранить изменения несохранённые ранее


Другие функции и команды

Из командного режима нажать клавиши по следующей схеме:

Клавиша Результат
CTRL+g Показывает различную информацию о позиции курсора (номер строки, номер колонны, процентное отношение местонахождения в тексте, название файла и т.д.)
/
или
?
С последующим регулярным выражением, осуществляет поиск подстроки по шаблону регулярного выражения, находя первое совпадение. Например: "/192\.168\.0\.1" будет искать "192.168.0.1". Здесь мы не рассматриваем как пишутся регулярные выражения
n Осуществляет поиск следующего вхождения(совпадения), после того, которое было уже найдено с "/"
N Осуществляет поиск предыдущего вхождения(совпадения), после того, которое было уже найдено с "/"
£
или
*
Осуществляет поиск следующего вхождения(совпадения) того слова, на котором находится курсор
# Осуществляет поиск предыдущего вхождения(совпадения) того слова, на котором находится курсор
%
(процент)
Осуществляет поиск скобки, т.е. находит местоположение либо открытия либо закрытия скобки, на которой находится курсор. Работает с круглыми, квадратными и фигурными скобками


Фильтровать текст посредством внешних команд

И напоследок, действительно мощное свойство, которое мне бы хотелось вам продемонстрировать, относится к возможности фильтровать часть текста с помощью внешних команд.
После изложения общего правила, последует конкретный и очень полезный пример.
  1. Выбрать с "v" текст который хотим фильтровать (смотри "Функции редактирования")
  2. Как только выбран текст, нажать "!"
  3. Ввести команду, на которую послать выбранный текст
Текст выбранный с "v" будет заменён результатом обработки указанной команды.

Например, предположим что у нас есть неупорядоченный список имён,
    Григорий
    Антон
    Мария
    Елена
    Валерий
    Александр
и мы хотим упорядочить его по алфавиту. Это мы можем сделать с помощью внешней команды "sort".
Следуя указанной процедуре, введя "!sort" после того, как выбран список,(с визуального режима), получим следующий результат
    Александр
    Антон
    Валерий
    Григорий
    Елена
    Мария


Заключение

Команды, которые предоставляет "vim" очень многочисленны и не ограничиваются только теми, которые были продемонстрированы. Мне хотелось показать самые основные, словом те, которые сразу же помогут пригодиться вам в вашей работе.
Для получения полной информации набрать ":help" в режиме ввода команд и нажать [ENTER]. Откроется окно с инструкцией по его закрытию и консультации различных аргументов.

Обратите внимание, что не все команды могут быть действующими или поддерживаемыми всеми версиями vim(или говоря проще "vi").


Если Вы нашли эту статью полезной для себя
поделитесь ею с друзьями в социальных сетях или поставьте "Мне нравится" (вверху справа) .
Большое спасибо!


Вы должны разрешить сохранение куки-файлов и согласиться на правила о конфиденциальности для использования "поделиться" и "мне нравится".
Вы всегда можете отказаться от сохранения куки-файлов и можете удалить куки "cookieconsent_status" из вашего браузера.

 

Tools (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Поиск в @myjsp.feelinglinux.com

Реклама