Это не полноценная статья, скорей краткая заметка, которая является наброском сценария для будущего скринкста.
И хоть про оба этих, несомненно замечательных инструмента в сети уже есть не мало материала, я добавлю еще немного от себя — как обычно это будет краткая выжимка с ссылками на куда более подробные источники. Итак, поехали!
TMUX
Что это
Это терминальный мультиплексор. Он позволяет создавать несколько терминалов (или окон), каждый из которых выполняет отдельную программу, а так же управлять этими терминалами на одном экране. Tmux может быть отвязан от экрана и продолжать свою работу в фоновом режиме, а позже — привязан вновь.
Откуда взялось
Пришел к нам из мира openbsd как и много чего хорошего, где был разработан как замена screen.
Зачем это
позволяет работать с несколькими сессиями в 1 окне. Вместо нескольких окон терминала к серверу — вы можете использовать одно. Позволяет подключаться/отключаться к текущему состоянию сессии. Запущенные программы и процессы продолжают работать.
Теперь подробней
Философия tmux — при запуске, tmux запускает сервер с 1 или более сессий. В каждой сессии может быть одно и боле окон, из 1 и более областей. Итого у нас парадигма сессия-окно-область:
Если проводить аналогию с миром GUI:
- сессия — для Вас как отдельное рабоче место, Ваш компьютер
- окно — аналог рабочего стола (или набора виртуальных рабочих столов)
- панель- окно приложения
Что вы можете делать с tmux:
- Одновременно держать несколько запущенных задач на одном экране. причем это не обязательно будет ваша локальная машина
- Оставлять задачу запущенной в фоне,
- Отключаться и подключаться к ней запускать в фоне задачу, которую обычно сложно перевести в формат фоновой, например регулярно чт-то выводящей на экран
- Составлять свой собственный консольный рабочий стол, собственную IDE и т.д.
- Кооперативно подключаться к одной сессии несколькими пользователями
Основные моменты
0. Prefix-key или управляющая комбинация клавиш. По умолчанию это Ctrl+B. Нажатие этой комбинации уведомляет tmux о том что дальше пойдет ввод управляющей клавиши, означающей команду. Короче это способ послать команду в tmux.
Команды и конфигурация. Следует различать два вида команд:
- Команды отдаваемые внутри tmux сессии — это Prefix комбинация + клавиша —
- Внешние команды — набираются вместе с командой Tmux —
- Конфиг — просто набор внешних команд, записанных в файл и выполняемых при старте tmux.
Кстати по дефолту конфига нет. Сгенерировать можно так: tmux show -g | cat > ~/.tmux.conf
1. Сессии
Основная единица измерения. При простом запуске вы запускаете свою первую сессию с именем 0. Можно и сразу ее поименовать:
- tmux new-session -s’my rails project’
или переименовать:
- tmux rename-session -t 1 «my session»
Для сессии же вы задаете глобальные настройки. Управлять сессией просто:
- tmux new — создать новую сессию с окном
- prefix + d — отсоединиться
- tmux list-session — список сессий с числом окон
- tmux attach -t 0 или 1 — присоединиться к той или иной сессии вместо номера можно начать вводить имя, если сессия поименованная
можно и переключаться на ходу:
- pefix + s — список сессий с переключениями
2. Окно
Каждая сессия делится на окна и запускается уже с одним окном по умолчанию.
- prefix + c — создать еще окно
создаются они с номером и их так же можно именовать:
- prefix + ,
В строке статус бара у вас показан список всех окон в рамках сессии. активное отмечено * :
- prefix + w — список окон с переключением
- prefix + 0-9 переключиться на окно
- prefix + n/p — следующее или предыдущее окно
3. Панели
Каждое окно может быть разделено на несколько панелей. По сути одно окно это уже и есть одна панель. Панель- это экземпляр шела или любой другой запущенной программы ( по умолчанию просто запускается шел):
- prefix + q (Показать номера панелей; перейти в область по нажатии клавиши, соответствующей номеру)
- prefix + % (Разделить окно вертикально)
- prefix + « “split-window” (Разделить окно горизонтально)
перемещаться по панелям
- prefix + стрелка
Вы можете сразу задавать сессию с одним пред настроенным окном. Пред настройка включает в себя указание числа панелей, их размещения и то, что в них будет запущено:
# Create pane horizontally, $HOME directory, 50% width of current pane
tmux split-window -h -c $HOME -p 50 vim
#Сreate new pane, split vertically with 75% height
tmux split-window -p 75
Скроллинг внутри панели
- prefix + PgUp — вход в «режим скролинга», после чего:
- PgUp, PgDown — скроллинг;
Все это лишь базовые возможности Tmux. Очень базовые. на самом деле он может куда больше- например вы можете создавать пред настроенные конфигурации, добавлять плагины, изменять внешний вид.
Список домашнего чтения
- Книга по tmuх
- Краткая шпаргалка по tmux (менеджеру терминалов)
- Шпаргалка по работе с Tmux (терминальный мультиплексор)
- Приручаем Tmux для повседневных нужд
- https://xakep.ru/2010/05/20/52156/
- https://wiki.archlinux.org/index.php/Tmux_(Русский)
VIM
Что это
Если кратко — это командно-ориентированный консольный текстовый редактор, с довольно высоким порогом вхождения, который позволяет Вам редактировать произвольный текст или код не отрывая руки от клавиатуры. И нет, сеть не в огромном сочетании «горячих клавиш» ( хотя тут вы их можете запрограммировать сколько душе угодно), это именно команды и их сокращения, что повышает производительность при работе с текстом. В чем же отличие от горячих клавишь, спросите Вы? Нельзя нажать сразу несколько горячих клавиш, а вот отдать сразу несколько команд — можно. Плюс возможности этого редактора расширяются огромным числом плагинов.
Звучит не очень убедительно но тут лучше просто попробовать, чем слушать и читать.
Откуда взялось
Пришел к нам как дальнейшая эволюция редактора Vi, а тот вообще из эпохи динозавров)
Зачем это
Как я уже говорил, он позволяет очень удобно и быстро (естественно при наличии некоего навыка) работать с любым текстовым файлом- просто текст, код, конфиг, верстка и т.д. Помимо этого, этот текстовый редактор входит в базовый состав утилит почти любого Linux дистрибутива, от Ubuntu Server до OpenWRT. Поэтому умея работать с ним ( любить при этом не обязательно) — вы точно будете во всеоружии!
Теперь подробней
Философия vim — для начало нужно уяснить себе, что этот редактор работает в нескольких режимах последовательно. Для начала это режим редактирования и режим команд. В первом — вы пишете текст, во втором Вы работаете с файлом. В том числе и с текстом.
Чтобы не уподобляться 100500 мануалам в духе «как выйти из Vim перед этим сделать то и то». Вы можете пойти и почитать на эту тему, благо есть тонна отличных учебных пособий, например:
- OpenVim — интерактивный онлайн учебник.
- Vim Adventures — приключенческая игрушка.
Плюс на Youtube есть куча всевозможных обучающих видео. Но на мой взгляд (чисто ИМХО), есть два более простых и удобных способа:
- Vimtutor — Не интерактивный а наоборот, очень простой учебник, который представляет собой приложение к vim. Если вы пользователь linux/unix, просто введите эту команду и выполняйте то что там написано.
- Найдите какой нибудь сборник основных команды в виде картинки (например такой) и начните использовать!
Для начала, давайте соберем основные комбинации клавиш и команды, чтобы быть «в теме». Я буду совмещать отдельные команды и их наиболее часто (опять же, ИМХО) встречающиеся комбинации.
Управление редактором:
- i / insert — вход в режим редактирования
- Esc — выход в режим команд
Удаление:
- х в режиме команд — удалит букву под курсором
- d — удаление:
- dw, de — удалит следующее за курсором слово. «w» — включая пробел и «e» — не включая его
- d$ — удалить все от курсора и до конца строки
- d^ — от начала строки идо курсора
- d*число* или *число*d — сколько раз повторить команду удаления, например d4w — удалить 4 слова от курсора и далее вправо.
- dd в начале строки — удалить строку, 2dd — удалить две строки
Замена:
- r*символ которым заменяем*— набираем, установив курсор над заменяемым символом.
Вырезать/вставить:
- Для строки:
- dd — в начале вырезаемой строки
- p — в конце строки, после которой надо вставить
- Для слова:
- dw / d$ — в начале слова/ подстроки которые вырезаем.
- p — после слова/подстроки куда вставить
Отмена изменений:
- u — отменить последнюю операцию
- Ctrl+R — вернуть последнюю операцию
- U-отменить все изменения в строке
Движение:
- h, j, k, l — Перемещение вверх/вниз, вправо/влево. Их можно заменить стрелками, но Vim-гуру рекомендуют привыкнуть именно к этим клавишам перемещения, чтобы не убирать пальцы с основной клавиатурной панели.
Поиск:
- /*регулярное выражение* — поиск выражения/строки.
- %*скобка* — поиск парной скобки относительно введенной
Все эти команды набираются в командном режиме (как неожиданно, не правда ли!), просто по ходу пьесы. Однако есть еще один тип команд — внешние. Имеется ввиду по отношению к редактируемому тексту. Эти команды начинаются с символа»:» и вводятся либо целиком, либо сокращенно:
- :edit / :e *filename*— открыть файл
- :quit / :q — выйти
- :write / :w *filename* — сохранить. Если не указать имя, сохранит файл под текущим именем. Если имени нет, попросит ввести.
Так же мы можем выполнить команды из операционной системы, используя конструкцию :!*commandname*
Расширение функционала
Но теперь займемся более интересным вопросами. Vim несомненно отличный редактор, но его сила еще и в том, что он обладает впечатляющим набором плагинов и возможностью настройки и программирования своей работы.
По умолчанию, для Vim не создается конфигурационный файл. Но мы можем сделать его — создайте в корневом каталоге файл «.vimrc» и заносите туда настройки. Ряд настроек можно почерпнуть из документации. Вот пример очень простого файла настройки:
set number
set showcmd
set incsearch
set hlsearchset expandtab
set tabstop=4
set softtabstop=4
syntax on
Этот конфиг:
- включает нумерацию строк в редакторе
- Включается история команд
- Включает инкрементальный поиск (поиск по мере ввода строки)
- Включить подсветку поиска
- Заменить табуляцию на отступы пробелами
- Отступ табуляцией теперь будет = 4 пробелам
- Включается подсветка синтаксиса
Плагины
Для начала, нам необходим менеджер плагинов. Среди прочих равных я для себя выбрал vim-plug. там же, на странице есть и инструкция по установке. Ставится одной командой в консоль + добавляется секция в конфигурационный файл, позволяющая автоматически устанавливать и подключать плагины:
Из приглянувшихся мне (как не разработчику) плагинов, я бы выделил следующие:
- nerdtree — позволяет открывать дерево каталогов / дерево файлов и папок вашего текущего проекта прямо в окне vim
- тема оформления gruvbox. Кстати, еще больше тем и конфигов по оформлению можно найти вот тут.
- YouCompleteMe — автодополнение для популярных языков программирования (мне как минимум интересен Python)
- Auto Pairs — автоматическая добавка и удаление таких парных элементов как различные скобки
- CtrlP — быстрый поиск по вводимой строке.
Ищите, пробуйте подбирайте!)
Домашнее чтение
- Как пользоваться текстовым редактором
- 5 бесплатных ресурсов по изучению Vim
- Vim — викиучебник
- набор видеоуроков по vim:
- Vim 01 — Основы
- Vim 02 — Конфигурация и плагины
- Vim 03 — Плагины. Самое необходимое
- Vim 04 — Окна
- Vim 05 — Поиск и навигация
- Vim 06 — Vim + Tmux
- Vim 07 — Neovim