Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Приёмы работы с Vim

В предыдущей заметке о Vim мы с вами рассмотрели самый базовые принципы работы с этим чудесным текстовым редактором. Готовы повысить свой уровень знаний? Многие используют Vim, не задействую при этом и малой части того, на что он способен. В этой заметке мы рассмотрим новые приёмы работы с Vim, включая сокращения, автозавершение слов и редактирование нескольких документов в рамках одной Vim-сессии.

Автозавершение слов

Хотя изучение Vim и может показаться сложной задачей на первых этапах, будьте уверены в том, что в будущем умение работать с ним сэкономит вам немало времени. Одним из способов, которыми Vim поможет сэкономить вам время, является автозавершение слов. Эта возможность Vim часто используется разработчиками и системными администраторами при редактировании исходных кодов программ или конфигурационных файлов.

Автозаврешение работает следующим образом. Когда вы набираете какое-нибудь длинное слово, которое уже встречается где-то в тексте, нажмите Ctrl+p или Ctrl+n в процессе набора слова. Например, у вас в тексте уже есть слово "searching". Теперь начните вводить это слово где-нибудь в тексте, при этом наберите только первые буквы, например "sea", и нажмите Ctrl+p. Vim автоматически завершит слово "searching" или предложит варианты слов, начинающихся с "sea", если таковые имеются.

Если имеется несколько вариантов завершения слова, то после нажатия Ctrl+p вы можете продолжить набирать слово, сужая тем самым область предлагаемых Vim вариантов слов. Или же вы можете просто выбрать нужное слово из списка при помощи клавиш со стрелками и затем нажать Tab. Если Vim не найдёт в документе ни одного подходящего слова, вы получите сообщение "pattern not found".

В чём разница между командами Ctrl+p и Ctrl+n? В том, что первая ищет слова в обратном направлении, относительно текущего, а вторая - в прямом. Во многих случаях люди не делают большой разницы между этими командами.

Сокращения

Как вы уже наверное заметили, Vim является отличным редактором для людей, которые любят работать с клавиатуры. Среди многих возможностей редактора в этом  отношении имеется ещё одна мощная штука - сокращения, которые вы можете настраивать "на лету", в процессе редактирования. Давайте посмотрим, что это такое.

Представьте, что вы редактируете какой-то текст, а нём часто-густо встречается одно и то же длинное слово, которое вы уже замучились набирать. Это может быть чья-то фамилия или название какой-то компании. Итак, если вы не хотите набирать постоянно "ReallyLongWord", просто сделайте для него сокращение в командном режиме:

:ab rlw ReallyLongWord

Первый аргумент команды :ab - это, собственно, само сокращение, а второй - это слово, до которого будет расширено сокращение. Теперь если, набирая текст, вы введёте слово "rlw", Vim автоматически заменит его на "ReallyLongWord". Просто, не правда ли?

Что делать, если сокращение вам больше не нужно и вы хотите его удалить? Просто закройте Vim и все определённые сокращения автоматически удалятся. Также можно удалить сокращение не выходя из редактора при помощи команды:

:una rlw

Описанной возможностью Vim автор пользуется постоянно. Очень удобная штука, когда вам необходимо частенько употреблять в тексте чью-либо сложную фамилию или длинное название организации.

Мэпинг

Оценили возможности использования сокращений? А что, если вам необходимо выполнить последовательность определённых команд по нажатию горячей клавиши или нескольких клавиш? Здесь вам поможет мэпинг.

Простой пример. Vim умеет подсвечивать результаты поиска. Эта возможность обычно отключена по умолчанию. Если вы выполните

?searchitem

или

/searchitem

вы будете автоматически перемещены к первому результату поиска, однако вам не будут видны оставшиеся найденные термы. Если же вы хотите видеть все вхождения искомого терма, вам нужно будет включить подсветку поиска. Автор находит подсветку найденного отвлекающей, однако она действительно необходима и полезна в работе. Так, в конфигурационном файле Vim автора есть строка, выполняющая мэпинг:

nmap <silent> <C-n> <Esc>:call ToggleHLSearch ()<CR>

Эта строка настраивает мэпинг комбинации Ctrl+n для включения/отключения функции подстветки результатов поиска. Сперва "нажимается" клавиша Escape, чттобы переключиться в командный режим, затем даётся команда :call ToggleHLSearch () и "нажимается" возврат каретки, то бишь Enter.

Другой, более простой пример. Когда автор редактирует чужие статьи, ему удобно двигаться по тексту, проскакивая по нескольку слов за раз. Для удобства автор настроил у себя следующий мэпинг, перемещающий курсор на пять слов вперёд за раз:

imap ,w 5W

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

Чтобы настроенные вами мэпинги и сокращения не исчезали после закрытия Vim, вам нужно добавить их в файл .vimrc, расположенный в вашем домашнем каталоге.

Освоение интерфейса Vim

Изначально не очевидно, однако в одной сессии Vim можно одновременно редактировать несколько файлов. Делается это при помощи т. н. "окон" или же при помощи относительно новой возможности Vim, добавленной в 7-й версии - вкладок.

Давайте сперва рассмотрим окна. Когда вы открываете Vim для редактирования файла, вы видите одно окно с содержимым файла. Представим, что вы редактируете ну очень большой файл и вам нужно редактировать его параллельно в двух местах. Дайте команду (не забывайте нажимать Ctrl+Esc для перехода в командный режим)

:split

и вы увидите один и тот же файл в двух разных окнах.

Хорошо, но как теперь переключиться обратно в предыдущее окно? Очень просто. Перейдите в командный режим, нажмите Ctrl+w и при помощи клавиш со стрелками или клавиш перемещения (h, j, k, l) выберите нужное окно, на которое хотите переключиться относительно текущего окна. Допустим, ваша Vim-сессия разделена горизонтально на два окна. При помощи команды

Ctrl+w k

вы переключитесь на окно, расположенное выше активного, в то время как команда

Ctrl+w j

переключит вас на окно, расположенное ниже. Двойной повтор команды Ctrl+w переключит вас на следующее окно.

Помимо переключения между окнами вы можете перемещать сами окна. Команда

Ctrl+w r

вращает окна по часовой стрелке, а команда

Ctrl+w R

вращает окна против часовой стрелки.

Использование нескольких окон для работы с одним и тем же файлом используется сравнительно редко. Что что используется гораздо чаще, так это разделение сессии на окна при редактировании нескольких файлов. Представим, что вам захотелось открыть во втором окне какой-нибудь другой файл. Просто передайте путь к нужному файлу в виде параметра команде :split. Например:

:split /etc/dhcp3/dhclient.conf

Что делать, если вам понадобилось вернуться в однооконный вариант Vim-сессии? Для это вам нужно всего лишь закрыть ненужные окна традиционным способом (при помощи команды :q, :!q или :wq) или же, находясь в окне, которое хотите закрыть, дать команду

Ctrl+w c

В случае последней команды Vim не даст вам закрыть изменённый, но не сохранённый файл, что логично.

Давайте подытожим список основных команд, используемых при работе с окнами в Vim.

  • :split или Ctrl+w s - добавляет в сессию Vim горизонтальное окно
  • :vsplit или Ctrl+w v - добавляет в сессию Vim вертикально окно
  • :split filename  - добавляет в сессию Vim горизонтальное окно и загружает в него filename
  • :vsplit filename  - добавляет в сессию Vim вертикальное окно и загружает в него filename
  • Ctrl+w h - переключает на левое окно, относительно текущего
  • Ctrl+w l - переключает на правое окно, относительно текущего
  • Ctrl+w j - переключает на нижнее окно, относительно текущего
  • Ctrl+w k - переключает на верхнее окно, относительно текущего
  • Ctrl+w Ctrl+w - переключает на следующее окно
  • Ctrl+w r - передвигает окна по часовой стрелке
  • Ctrl+w R - передвигает окна против часовой стрелки
  • Ctrl+w c - закрывает текущее окно

И сразу ответ тем, кто спросит: "не лучше ли открыть несколько однооконных сессий вместо всей этой возни с окнами?". Подумайте о том, как иной раз бывает утомительно редактировать несколько файлов, открытых в нескольких отдельных SSH-сессиях к серверу, особенно высоконагруженному. И потом, гораздо удобнее выполнять копирование/вставку между несколькими файлами в пределах одной сессии, когда у вас всё перед глазами и не нужно судорожно переключаться между несколькими терминалами в поисках того,что же вы собирались скопировать и откуда.

Вкладки

Со времён появления вкладок в веб-браузерах пользователи очень привыкли и активно пользуются этим механизмом. Действительно, идея отличная. Так почему бы не использовать их в Vim? Если вы часто работаете одновременно с несколькими файлами и вам не нужно видеть их все одновременно на одном экране, то использование вкладок - самое то, что вам необходимо.

Для того, чтобы запустить Vim с несколькими файлами,открытыми в различных вкладках, запустите его следующей командой:

$ vim -p filename1 filename2 filename3

Если же у вас уже имеется открытая сессия Vim, вы можете загрузить файл (или создать новый) в новой вкладку при помощи команды:

:tabnew filename

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

Переключение между закладками также очень простое. Команда gt переключит вас на следующую вкладку, а команда gT - на предыдущую.

Закрывать вкладки можно несколькими способами. Первый способ - это всё то же "традиционное" закрытие при помощи команд :q, :!q или :wq. Второй способ - использование команды для закрытия текущей вкладки:

:tabc

Как и в случае с окнами, эта команда не даст вам закрыть вкладку, если файл в ней изменялся, но не был сохранён. Давайте подытожим список команд для работы с вкладками:

  • vim -p filename1 filename2 - запустит Vim и откроет (или создаст новые) файлы filename1 и filename2 в двух вкладках
  • :tabnew - откроет пустую вкладку
  • :tabnew filename - откроет новую вкладку и загрузит (создаст новый) в ней файл filename
  • gt - переключит на следующую вкладку
  • gT - переключит на предыдущую вкладку
  • :tabc - закроет текущую вкладку

Заключение

Также вы можете комбинировать использование вкладок и окон, открывая несколько вкладок и разбивая каждую на несколько окон. Комбинируйте, Vim очень гибок. Если у вас появляется мысль о чём-то, чего вам бы хотелось от текстового редактора, скорее всего Vim это уже умеет.

Конечно же возможности Vim при работе с вкладками и окнами гораздо богаче. Вы можете воспользоваться командой :help и получить необходимую вам информацию.

Освоив приёмы, описанные здесь, вы можете существенно повысить уровень вашей продуктивности. В следующих статьях мы с вами познакомимся ещё с несколькими функциями Vim, а тем временем вы можете обратиться к vimtutor (запускается из оболочки) и самостоятельно покопаться в родном руководстве Vim, в котором, вполне вероятно, найдёте для себя что-нибудь новенькое и полезное.


Оригинал статьи на Linux.Com

Иcтoчник


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP