Как пользоваться текстовым редактором vim

От командного режима к безопасности

Чтобы войти в командный режим, нажмите клавишу Esc. Ничего видимого не произойдет. Ударьте еще несколько раз. Если вы слышите звуковой сигнал при нажатии клавиши Escape, значит, вы находитесь в командном режиме. Звуковой сигнал говорит вам: «Не нажимайте Esc, вы уже в командном режиме». Если вы слышите звуковой сигнал при нажатии Esc, все в порядке.

Введите двоеточие, букву «q» и восклицательный знак без пробелов. Эти три символа должны появиться в крайнем левом углу нижней строки терминала. В противном случае нажимайте Esc, пока не услышите звуковой сигнал, и повторите попытку. Когда увидите их, нажмите клавишу Enter:

:q!

В этой команде q — это сокращение от quit. Восклицательный знак добавляет акцента, как будто вы кричите «Выйти!» в vi. От этого тебе станет немного легче.

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

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

cat .bashrc | less

Если при выходе из vi вы видите сообщение «нет записи с момента последнего изменения», это означает, что вы пропустили восклицательный знак в команде. Чтобы предотвратить выход и потерю любых изменений, которые вы, возможно, захотите сохранить, vi дает вам возможность сохранить их. Просто введите: q! с восклицательным знаком для выхода из vi и отмены любых изменений.

Командный и визуальный режимы Vim

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

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

Одна из самых известных команд данного режима — :s. Она предназначена для поиска и замены слов. С ее помощью второй пример из предыдущего раздела можно было бы решить так:

s/Windows/Linux/

Такая команда заменит первое встреченное в текущей строке слово Windows на Linux. Чтобы заменить все слова Windows на Linux в текущей строке можно использовать модификатор g:

s/Windows/Linux/g

А вместо искомого слова использовать регулярное выражение:

s/Windows/Linux/

Операцию замены можно расширить на весь файл указав перед командой знак процента:

%s/Windows/Linux/g

А можно натравить ее только на нужный диапазон строк:

1,10s/Windows/Linux/g

Или на текст между двумя метками:

1,10s/Windows/Linux/g

Удобнее всего использовать командный режим сочетании с визуальным. Последний представляет собой режим выделения, которого не было в редакторе Vi. Работает он так: вы переходите на строку, с которой хотите начать выделение текста, затем нажимаешь v (или Shift+V для построчного выбора) и выделяете текст с помощью любых стандартных команд перемещения (например, } чтобы выделить текущий абзац). Затем вы можете либо выполнить команду редактирования (например, d, чтобы удалить выделенный текст), либо перейти в командный режим и выполнить над ним более сложную операцию.

Визуальный режим Vim

Вторая из наиболее часто используемых команд — :g. Это встроенный grep, с помощью которого можно искать строки и выполнять над ними действия. Например, следующая команда удалит все строки, содержащие Windows во всем файле:

%g/Windows/d

А такая команда удалит все пустые строки (содержащие только пробелы):

g/^s*$/d

Следующая команда удалит пустые строки (не содержащие ни одного символа) в HTML-таблице:

/,/

/g/^$/d

Строки можно перемещать, например, чтобы переместить все строки, содержащие «Windows», в конец файла, набирай:

g/Windows/m$

Это далеко не все, что может делать встроенный grep. Однако если мы будем вдаваться в подробности, они не влезут ни в какую статью. Вместо этого посмотрим, что еще умеет командная строка Vim.

С ее помощью удобно вставлять в текст содержимое других файлов или вывод команд Unix. Например, так можно вставить в текст содержимое файла todo.txt:

rtodo.txt

Команда :r поддерживает автодополнение, поэтому вбивать полный путь не придется.

Если добавить к r восклицательный знак — она вставит в текст вывод указанной команды:

r!uname-a

Когда ты пишешь статью в «Хакер» с кучей цитат из вывода команд, такая функция становится просто незаменимой.

Vim позволяет не только читать вывод команд Unix, но и отправлять текст им на вход. Например, следующая команда отсортирует строки с 1 по 10 с помощью sort:

1,10!sort

Отсортировать весь файл:

%!sort

Прогнать файл через форматтер fmt:

%!fmt

Конечно же, все это работает в том числе в визуальном режиме.

Советы и рекомендации

Нумерация строк

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

Переход к новой строке осуществляется посредством или . Все переходы запоминаются в лист переходов, для более подробной информации смотрите .

Проверка орфографии

Проверку орфографии в Vim можно включить с помощью:

set spell
Действие Команда
следующая ошибка
предыдущая ошибка
предложения для исправления
добавить правильное написание
добавить правильное написание (на сеанс)
добавить неправильное написание
добавить неправильное написание (на сеанс)
повторить проверку орфографии во всем файле

Совет:

  • Чтобы включить проверку сразу для двух языков (например, английского и русского), добавьте в или и перезапустите Vim.
  • Вы можете включить проверку орфографии для конкретных типов файлов (например .txt), используя плагин FileType и собственное правило для определения типа файла. Чтобы включить проверку орфографии для всех файлов, оканчивающихся на .txt, создайте файл и вставьте туда строку: . Далее, вставьте строку в файл или и перезапустите Vim. Или поместите строку в или и перезапустите Vim. Не забудьте отредактировать строчку (specifically ), чтобы включить соответствующие типы файлов для проверки орфографии.
  • Чтобы включить проверку орфографии только для документов LaTeX (или TeX), добавьте в файл или и перезапустите Vim.

Запуск Vim по команде vi

Создайте для на .

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

Возврат каретки DOS/Windows

Если вы видите последовательность в конце каждой линии, это означает, что вы редактируете текстовый файл, который был создан в MS-DOS или Windows. Дело в том, что в Linux для переноса принято использовать один символ новой строки (LR), тогда как в системах Windows/MS DOS для той же цели используется последовательность из двух символов: возврата каретки (CR) и новой строки (LR). Как раз эти символы возврата каретки и отображаются в виде .

Для удаления всех символов возврата каретки из файла, выполните:

:%s/^M//g

Обратите внимание, что здесь — управляющий символ, а не обычный. Чтобы ввести управляющую последовательность , нажмите .. Также вы можете просто установить пакет и исправлять файлы командой .

Также вы можете просто установить пакет и исправлять файлы командой .

Примечание: Другой простой способ заключается в изменении опции . Используйте для преобразования файлов с окончанием строки DOS/Windows в файлы с окончанием строки Unix. Для того, чтобы сделать обратное, просто используйте .

Пустое пространство в нижней части окон gVim

Когда используется оконный менеджер, настроенный на игнорирование размеров окна, gVim заполняет неиспользованные области окна стандартным фоновым цветом темы GTK.

Решение заключается в регулировании количества места, которое будет резервировать в нижней части окна gVim. Поместите следующую строку в :

set guiheadroom=0

Примечание: Установив значение 0, вы не сможете видеть горизонтальную полосу прокрутки внизу окна.

Vim при переводах текста, или для чтения английской документации

Итак, чтобы можно было успешно читать и переводить документацию на английском языке, нужно ИМХО всего 3 вещи:

  • Редактор.
  • Переводчик.
  • Проверка орфографии

Если их удобно объединить, то можно получить хорошую среду, для перевода/чтения.

Что возьмем

Редактор мы естественно возьмем VIM хотя бы потому что статья так называется. Переводчик mueller консольная версия, работает так:

% mueller sex
sex   _n. 1> _биол. пол; the weaker sex слАбый пол, жЕнщины; the sterner (или stronger) sex сИльный пол, мужчИны; the sex _шутл.  жЕнщины 2> секс 3> _at
tr. половОй, сексуАльный; sex instinct половОй инстИнкт; sex intergrade гермафродИт  

И орфографмометр: это spell в виме, словари скачаем с vim.org

Как настроим

Мне интересна возможность выпадающего списка, при наведением на неизвестное мне слово мышкой. Для этого, после долгого чтения манов (или гугленья) узнаем что с помошью команды system можно выполнить какое-то действие, вывод которой куда-либо записать. Короче, пишем где-нибудь в ~/.vimrc

function! MyBalloonExpr()
       return system("mueller ". v:beval_text)
endfunction
set bexpr=MyBalloonExpr()
set ballooneval
set balloondelay=100

Определили функцию MyBallonExpr которая будет формировать строку mueller и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.

Естественно вместо mueller вы можете поставить любую другую программу, которая переводит текст.

Рецепт для оч.умелых ручек

Если у вас нет консольной версии , но есть много энтузиазма, то можно поступить так:

  • Идем на и забираем оттуда
  • Извлекаем из полученного архива файл и кладем его, скажем, в
  • Там же создаем файл со следующим содержимым:
#!/bin/bash
# 
WORD=`echo $1 | sed -e 's/*/\L&/g;s///g'`;
if ; then exit; fi;
LINES=50;  
DICTIONARY="$HOME/dict/mueller-base.dict.dz"; 
# 
zgrep -aA$LINES '^'$WORD'$' $DICTIONARY | sed -e '/^$/d; 1s/^/ &/;/^/,$d'
#

даем нашему новому консольному словарику право на исполнение:

$ chmod +x ~/dict/mueller-base.sh

и проверяем его работоспособность:

$ ~/dict/mueller-base.sh head

Для графической версии редактора (gvim) функция перевода в нашем ~/.vimrc должна будет выглядеть так:

function! MyBalloonExpr()
   return system("$HOME/dict/mueller-base.sh ". v:beval_text)
endfunction
set bexpr=MyBalloonExpr()
set ballooneval
set balloondelay=500

Примечание:

  • Естественно, что функция работает только в gVim, зато выглядит красиво. Наведите курсор мышки на слово и оставьте его неподвижным секунду-две (поначалу, можно вообще убирать руку с мышки, позже приловчитесь).
  • ограничивает количество выводимых строчек. Можете подобрать цифру под свой монитор.
  • Рекомендую выставить миллисекунд. Да, помедленнее. Но мышка будет меньше цепляться за слова.

Для текстовой версии редактора (vim) придётся делать специальную функцию TranslateWord() и вешать её вызов на специальную функциональную клавишу, например

function! TranslateWord()
   let s:dict    = "$HOME/dict/mueller-base.sh"
   let s:phrase  = expand("<cword>")
   let s:tmpfile = tempname()
   silent execute "!" . s:dict . " " . s:phrase . " > " . s:tmpfile
   execute "botright sp " . s:tmpfile
endfunction
map <F9> :call TranslateWord()<CR>

Примечание:

  • Это работает точно так же и в графической версии редактора (). Поэтому метод можно считать универсальным, но требует нескольких нажатий клавиш, и сплит-окно выглядит менее элегантно, чем подсказки.
  • Открывшееся окно с переводом можно закрыть стандартным способом ( ). Ну, а если вы воспользовались советом выше и забиндили на клавишу предложенное пользовательское меню, то алгоритм работы будет совсем простой: смотрим перевод вернули как было.
  • Этот метод использует временный файл
  • Т.к. в этом методе нет необходимости в ограничении, чтоб подсказка помещалась на экран, то для можно увеличить лимиты, хоть до . Этот метод не имеет ограничений на количество выводимых строчек.

Минимальные основы VIM

На данный момент существует две версии редактора – vi и vim. Vim расшифровывается как Vi Improved, улучшенный vi. Это новая версия, которая принесла очень много улучшений. В большинстве современных дистрибутивов используется именно она. Поэтому если я буду писать vi, это значит, что я предполагаю использование vim.

Текстовый редактор Vim может работать в двух режимах. Это и есть его главная особенность. Первый режим, который используется по умолчанию при открытии редактора – это командный. В этом режиме вы можете вводить команды vi, а также использовать символьные клавиши для управления редактором. Второй режим – обычное редактирование текста, он работает так же как и редактирование текста в nano. Для переключения в командный режим используется клавиша Esc. Для переключения в режим редактирования – клавиша i. Если вас интересует только как в редакторе vi сохранить и выйти, листайте вниз, но если вы хотите узнать как пользоваться текстовым редактором vim, эта статья для вас.

Перед тем как идти дальше мы бы посоветовали вам пройти курс обучения встроенный в редакторе. Выполнение всех обучающих заданий займет 25-30 минут. Но после того как вы освоите все что там написано, эта статья поможет вам закрепить материал. Дело в том, что команд и сочетаний клавиш у vim очень много и запомнить их все без практики невозможно. Для запуска обучения наберите: $ vimtutor.

Интерфейс [ править ]

Графический Vim (gVim) под GTK + 2 .

Код вверху ( Go ), открытые файлы, регистры («менеджер буфера обмена» и история макросов)

Как и vi , интерфейс Vim основан не на меню или значках, а на командах, заданных в текстовом пользовательском интерфейсе ; его режим графического интерфейса , gVim , добавляет меню и панели инструментов для часто используемых команд, но полная функциональность по-прежнему выражается через режим командной строки . Vi (и, как следствие, Vim) имеет тенденцию позволять машинистке держать пальцы в главном ряду , что может быть преимуществом для машинистки слепым методом .

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

Vim также имеет встроенную справку (с помощью команды), которая позволяет пользователям запрашивать и перемещаться по командам и функциям.

Поиск (grep) внутри Vim по файлам на диске без плагинов

Режимы править

Vim имеет 12 различных режимов редактирования, 6 из которых являются вариантами 6 основных режимов. Основные режимы:

  • Нормальный режим — используется для команд редактора. Это также режим по умолчанию, если не указан параметр.
  • Визуальный режим — аналогичен обычному режиму, но используется для выделения областей текста. Обычные команды запускаются в выделенной области, которую, например, можно использовать для перемещения или редактирования выделения.
  • Выбрать режим — работает аналогично визуальному режиму. Однако, если вводится печатаемый символ, возврат каретки или новая строка (или перевод строки), Vim вставляет символ и запускает режим вставки.
  • Режим вставки — аналогично редактированию в большинстве современных редакторов. В режиме вставки буферы могут быть изменены с вставленным текстом.
  • Режим командной строки или Cmdline — поддерживает однострочный ввод в нижней части окна Vim. Обычные команды (начинающиеся с ) и некоторые другие конкретные буквы, соответствующие различным действиям (включая поиск по шаблону и команду фильтрации), активируют этот режим.
  • Режим Ex — аналогично режиму Cmdline, он принимает однострочный ввод в нижней части окна. Однако в режиме Cmdline ввод команды выходит из режима при выполнении команды. Ввод команды в режиме Ex не приводит к изменению режима.

История команд ниже: мы можем редактировать каждую команду и / или запускать ее снова

10.18 Поиск и замена

  • /text Искать вперед образец text
  • ?text Искать назад образец text
  • n Повторить последний поиск в том же направлении
  • N Повторить последний поиск в обратном направлении
  • Повторить последний поиск вперед
  • ? Повторить последний поиск назад
  • s/from/to/ Искать from
    и заменить его на to в текущей строке, или в указанном диапазоне
    addr (два номера строки разделенные командой; 1,$ весь файл).
    Заменить одно совпадение на строку либо все совпадения
    если g указано.
    Например, :3,20s/someword/anotherword/g. Заменит «someword» на «anotherword» начиная от строки номер 3 до строки 20. ‘g’ — означает замену всех совпадений.

Копировать, Вырезать и Вставить

Когда вы нажимаете v в командном режиме, включается визуальный режим. Все передвижения курсора выделяют текст, с той позиции где был осуществлён переход в визуальный режим. Выделив нужный вам текст, нажмите команду y, после чего данный текст будет скопирован. Переместившись в новое место и нажав p скопированный текст добавится после курсора, P делает вставку перед курсором.

Выделив текст, команда x удалит этот текст. Команда d вырежет выделенный текст, в дальнейшем его можно вставить командой p.

Выделение блока

Выделять блоки текста можно после нажатия команды <ctrl>-v. Команда V включает визуальный режим, в котором выделяются строки целиком, а не отдельные символы.

Лучшие консольные текстовые редакторы Linux

Начнём с консольных текстовых редакторов. Сфера их применения довольно специфична и обычному пользователю скорее всего не подойдёт. Редактирование текста прямо из консоли будет полезно при удалённом подключении к серверу или же при написании кода методом слепой печати.

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

1. Nano

Nano – это довольно простой консольный текстовый редактор Linux и предустановлен на большинстве дистрибутивов. Он будет полезен, если большую часть работы вы выполняете в консоли или же подключаетесь удалённо по SSH. Он имеет функцию подсветки синтаксиса, а также полезную панель с подсказками горячих клавиш. Например, если программа выдала ошибку и указала 120 проблемную строчку, то просто вызывайте редактор сразу к ней:

Можете подробнее ознакомиться с Nano в нашем материале.

2. Vim

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

Установить Vim можно командой:

3. GVim

Начать изучение Vim можно с его версии с графической оболочкой. По началу вы будете долго выискивать нужный инструмент, но со временем запомните горячие клавиши и команды и перестанете обращаться к меню и, возможно, перейдёте на консольную версию редактора.

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

Для установки GVim воспользуйтесь консольной командой:

4. Emacs

Другим менее популярным консольным текстовым редактором является Emacs. Он не получил такого распространения как Vi/Vim, ведь тот одно время был установлен на многих дистрибутивах по умолчанию. В любом случае для использования Emacs вам понадобится то же самое, изучить набор команд и горячих клавиш, а также настроить редактор под себя. Функции написаны на языке Elisp. Синтаксис Lisp вряд ли подойдёт новичкам, но вам не обязательно писать свои расширения, по умолчанию в редакторе есть почти всё необходимое.

Спорить о том, что лучше Vim или Emacs можно бесконечно, лучше попробовать оба и остановиться на том, что понравится больше.

Редактор Emacs устанавливается командой:

Вместе с консольной версией установится и графическая оболочка, поэтому для запуска именно консольной версии надо использовать параметр –nw.

5. Emacs (GUI)

Графическая оболочка Emacs заметно уступает Gvim. Как минимум она не русифицирована, но зато есть краткое руководство на русском языке. Многие инструменты спрятаны в подпунктах меню, что увеличивает время на их поиск.

6. Spacemacs

Spacemacs нельзя назвать полноценной графической оболочкой. Это скорее расширение, которое позволяет работать с Emacs проще и быстрее. Установка Spacemacs заметно сложнее и состоит из нескольких этапов:

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

10.2 Команды Shell

  1. TERM= code Помещает имя вашего терминала в переменную TERM
  2. export TERM Передаёт значение переменной TERM (код терминала) любой программе в UNIX системе.
  3. tput init Инициализирует терминал таким образом, чтобы он функционировал правильно с различными UNIX программами.
  4. vi filename Запускает vi и загружает на редактирование указанный файл.
  5. vi file1 file2 file3 Записывает в буфер vi три файла для последующего их редактирования. Эти файлы file1, file2, и file3.
  6. view file Загружает файл file в режиме только-для-чтения.
  7. vi -R file Аналогично преведущей команде.
  8. vi -r file Восстанавливает file и последние изменения после краха системы.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: