Русский
Русский
English
Статистика
Реклама

Vim

Перевод Как освоить Vim?

05.03.2021 12:10:54 | Автор: admin
Осваивать Vim это, пожалуй, страшно. Или, точнее, очень страшно. Речь идёт об изучении совершенно необычного подхода к редактированию кода, не говоря уже о работе с простым текстом. Многие несправедливо обвиняют, тех, кто выбирает Vim, в том, что они впустую тратят время.

Я со всей уверенностью могу заявить о том, что Vim позволил мне повысить эффективность в деле написания программ. Работать стало удобнее (ниже я расскажу об этом более подробно). Я никому не хочу навязывать Vim, но очень рекомендую освоить этот редактор всем, кто занимается программированием, работает в сфере Data Science, в общем тем, кто так или иначе пишет и редактирует некий код.



Если вам очень хочется узнать о том, стоит ли вам использовать Vim, и о том, кто и для чего им реально пользуется взгляните на этот материал (кстати, не позвольте его названию, Не пользуйтесь Vim, ввести себя в заблуждение). Ещё можете посмотреть это видео, которое, кстати, подготовил сам Люк Смит.

А теперь, учитывая всё вышесказанное, предлагаю поговорить о том, что такое, на самом деле, Vim!

Что такое Vim?


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

В Vim имеется несколько режимов работы, переключение между ними приводит к изменению функционала клавиатурных клавиш (например, клавиша W в режиме вставки, что неудивительно, позволяет ввести букву w, а вот в нормальном режиме она позволяет перемещать курсор вперёд на одно слово). При таком подходе клавиатура используется и для ввода символов, и для перемещения по тексту. Другими словами при работе в Vim не нужна мышь.

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

Конечно, на то, чтобы привыкнуть к Vim, нужно некоторое время. И это не прямая замена какой-нибудь IDE или редактора вроде VS Code. Но можно сказать, что Vim позволяет тому, кто умеет им пользоваться, значительно ускорить работу с кодом. Кроме того, интересно то, что его более простым аналогом является Vi стандартный текстовый редактор большинства Unix-подобных систем, работающий в терминале.

Как научиться работать в Vim?


1. Используйте vimtutor


Меня не удивляет то, что в каждом руководстве по Vim рекомендуется начинать изучать этот текстовый редактор с vimtutor. Поэтому я, без зазрения совести, поступлю так же. Нет нужды играть ни в какие Vim-игры (хотя они и довольно интересны), или прибегать к программам, помогающим запоминать бесчисленные клавиатурные сокращения. Надо просто установить vimtutor и, когда найдётся 10-15 минут свободного времени, прорабатывать этот официальный учебник по Vim. И не пытайтесь сразу же запомнить все клавиатурные сокращения Vim; вы запомните их постепенно, снова и снова проходя уроки vimtutor.

Хочу отметить, что Windows-пользователям я рекомендую использовать WSL (Windows Subsystem for Linux, подсистему Windows для Linux) и для прохождения vimtutor, и, в целом, для работы с Vim. Лично я в Windows с Vim не работал, поэтому не могу обещать того, что при работе с ним в этой ОС всё будет точно так же, как в Linux.

2. Постоянно пользуйтесь Vim


Практика это путь к совершенству. Это главный принцип, которого стоит придерживаться при изучении чего-то нового. Изучение Vim не исключение. Поэтому, пока вы изучаете Vim с помощью vimtutor, пользуйтесь этим редактором для решения реальных задач.

Используйте Vim как можно чаще. Нужно просмотреть текстовый файл? Запустите Vim. Хотите что-то по-быстрому изменить в Python-скрипте? Примените Vim. Делаете какие-то заметки? Делайте их с помощью Vim. В общем, полагаю, вы меня поняли. И каждый раз, когда работаете в Vim, всегда задавайтесь вопросом о том, какова наиболее эффективная последовательность нажатий на клавиши (то есть наиболее короткая последовательность), позволяющая решить текущую задачу.

И попутно постарайтесь сократить использование мыши.

3. Интегрируйте с Vim всё что сможете


Используйте клавиатурные привязки Vim везде, где это возможно. Начните делать всё, что сможете, в стиле Vim. Например, если вы пользуетесь браузером, основанным на Chromium (Chrome, Brave, Edge), или браузером Firefox, подумайте об установке расширения Vimium, которое позволяет пользоваться в браузере клавиатурными сокращениями Vim, отвечающими за перемещение по документу (H, J, K, L и так далее).

Если вы пользуетесь для работы с кодом некоей IDE найдите плагин или расширение для добавления Vim-привязок в соответствующую среду. Например, пользователи PyCharm (или любой IDE от JetBrains) могут воспользоваться ideavim. А пользователи VS Code (в 2021 году этот инструмент уже ближе к IDE, чем к обычным текстовым редакторам) могут прибегнуть к расширению VSCodeVim.

В Jupyterlab можно включить привязки Vim для встроенного текстового редактора путём установки jupyterlab-vim, что позволит полностью эмулировать Vim в ячейках блокнотов.

Постарайтесь органично интегрировать Vim в свою рабочую среду и несколько недель поработайте по-новому. Я могу говорить о том, что после нескольких VSCode-сессий в стиле Vim мне стало гораздо удобнее пользоваться этим редактором. А ещё я очень рад избавлению от мыши!

4. Перенастройте клавишу Caps Lock (но это необязательно)


Самая бесполезная клавиша, расположенная в самом лучшем месте клавиатуры. Именно так можно охарактеризовать клавишу Caps Lock. Поэтому советую превратить Caps Lock в Escape. Если вы интересуетесь Vim, то уже должны знать о том, что клавиша Escape используется в Vim для переключения режимов. Я очень советую тем, кто стремится к максимальной эффективности, воспользоваться вышеописанной модификацией.

Пользователи Windows и WSL могут использовать uncap программу, которая превращает клавишу Caps Lock в Escape.

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

Если вы работаете в Linux настроить всё как надо вам помогут StackOverflow и Google. Лично я (заслуженный пользователь Arch Linux) использую утилиту setxkbmap, с помощью которой делаю из Caps Lock ещё одну клавишу Escape. А потом включаю автозапуск утилиты при запуске системы:

setxkbmap -option caps:escape

5. Глубже изучите Vim


После того, как вы привыкнете к Vim и немного его освоите, придёт время для более глубокого освоения этого редактора ради дальнейшего повышения эффективности своего труда. Ниже я, основываясь на собственном опыте, привожу список самых полезных (и, пожалуй, уникальных для Vim) команд, применимых в нормальном режиме работы:

  • ZZ сохранить документ и выйти из Vim. Красивая команда.
  • zz, zt, zb прокрутка текста, перемещающая строку с курсором, соответственно, в центральную, в верхнюю или в нижнюю часть области просмотра.
  • Ctrl+u, Ctrl+d прокрутка области просмотра вверх или вниз на полстраницы.
  • ciw (Change Inside Word) удаление текущего слова и автоматический переход в режим вставки.
  • C удалить текст от позиции курсора до конца строки и перейти в режим вставки.
  • dt<char> (Delete To <character>) удалить текст от позиции курсора до следующего вхождения указанного символа.
  • ~ (тильда, на стандартной клавиатуре вводится клавишей, находящейся под Escape) переключение регистра (верхний/нижний) текущего или выделенного символа.
  • . (точка) повтор последней команды Vim.
  • ggvG= (перейти в начало файла, войти в визуальный режим, выделить весь текст до конца, выровнять выделенные строки) автоматическое выравнивание текста во всём файле.

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

Если вас интересуют другие команды Vim посмотрите это замечательное и довольно длительное видео, демонстрирующее прохождение уроков vimtutor, которое записал Вим Дизель (шучу это всё тот же Люк). Тут собрано множество полезнейших советов по Vim.

Итоги


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

  • Можно установить Neovim и поэкспериментировать с ним (это отрефакторенный форк Vim, рассчитанный на высокий уровень расширяемости и на поддержку графического интерфейса).
  • Можно перенести функционал Vim в терминал или интерпретатор командной строки, воспользовавшись vim-airline.


Vim-airline, тема violet (источник)

  • Можно попробовать некоторые из популярных Vim-плагинов.

Желаю всем, кто дочитал до этого места, наслаждаться будущим, наполненным благами Vim (и освободиться от власти мыши или трекпада).

Пользуетесь ли вы Vim?

Подробнее..

Перевод Заметки о Unix одновременное редактирование нескольких файлов в Vim

02.04.2021 16:10:53 | Автор: admin
Недавно мы завершили перевод последней нашей машины на новый клиент для Lets Encrypt. В ходе работы нужно было поменять пути к выгружаемым TLS-сертификатам во всех конфигурационных файлах, где они использовались. На многих компьютерах был лишь один конфигурационный файл, но на некоторых из наших Apache-серверов пути к TLS-сертификатам имеются во множестве файлов. Поэтому я и заинтересовался вопросом о том, как, пользуясь Vim, одновременно вносить одни и те же изменения в несколько файлов. Оказалось, что Vim поддерживает такую возможность уже очень давно, причём сделать это можно несколькими способами. Некоторые из этих способов основаны на том, что я назвал бы странностью Vim. Кто-то, возможно, назовёт это архитектурной особенностью данного редактора.



Чаще всего, или, точнее, когда мне приходится редактировать лишь сравнительно небольшое количество файлов, мне легче всего воспользоваться очень удобной командой :all, которая позволяет открыть окно для каждого буфера. После этого я, для применения некоей команды к каждому буферу, пользуюсь командой :windo. Например так: :windo %s/.../.../. Потом я записываю все изменённые буферы командой :wa.

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

В vi уже давно имеется возможность работать с несколькими буферами, но этот редактор всегда очень внимательно относился к тому, чтобы, перед переходом к другому буферу, пользователь записывал бы изменения, внесённые в текущий буфер. Тут легко прослеживается связь такого поведения редактора с теми временами, когда им пользовались на маленьких, сравнительно сильно нагруженных машинах, для которых и создавался vi. Дело в том, что пустой буфер это буфер, который не надо хранить в памяти или в файле подкачки на диске (и при таком подходе никто ничем не рискует в том случае, если vi или сам компьютер вдруг даст сбой). Но в наши дни это не соответствует тому, как большинство других редакторов, поддерживающих работу с несколькими файлами, подходят к решению аналогичной задачи. Большинство таких редакторов позволяют пользователю держать открытыми сколько угодно много изменённых буферов. Такие редакторы при этом ни на что не жалуются, не говоря уже о том, чтобы заставлять пользователя сохранять один буфер перед переходом к другому, или не давать открывать новые буферы. То, что такие редакторы не вмешиваются в действия пользователя, немного облегчают работу с ними, и Vim в этом плане немного непоследователен, так как содержимое окна может быть изменено, но это не мешает пользователю переключиться на другое окно.

Если учесть мою точку зрения на происходящее, то я, возможно, решил бы включить опцию hidden. Ну, если только я был бы совершенно уверен в выполненных мной изменениях файлов. Мне не хочется добавлять | update к команде :bufdo для немедленной записи изменений. А включение опции hidden приближает поведение Vim к поведению других редакторов. Недостатки такого подхода, о которых идёт речь в документации Vim, к моей работе отношения не имеют. Я пользуюсь командами :q! или :qa! только тогда, когда совершенно уверен в том, что хочу отказаться от всех несохранённых изменений.

Сделать то же самое можно и более хитрым способом, пользуясь командой :hide. Результаты моих недавних экспериментов говорят о том, что пользоваться ей надо так:

:hide bufdo %s/.../.../

Полагаю, нет идеального способа отмены последствий операции по изменению нескольких файлов, результат которой оказался не таким, как хотелось бы. Если все буферы пребывали в исходном состоянии до выполнения команд bufdo или windo, можно снова воспользоваться соответствующей командой для вызова undo в каждом из буферов (:bufdo u). При наличии неизменённых буферов это никак мне не повредит в том случае, если в ходе операции над несколькими файлами некий файл окажется неизменённым. Правда, если в некоторых буферах есть несохранённые данные, такая операция становится опасной, так как команда undo, выполняемая в каждом из буферов, довольно-таки ограничена. А именно, отменены будут только самые свежие изменения, вне зависимости от их связи с самой первой командой bufdo.

(Всё это говорит мне о том, что мне стоит внимательно перечитать (или просто прочесть) вопросы и ответы по работе с буферами Vim, так как в том, как в Vim организована работа с буферами, файлами, вкладками и окнами, кое-что мне не вполне ясно. GNU Emacs в подобных вопросах тоже, на свой лад, не до конца мне понятен, но, пользуясь им, я, по крайней мере, могу ориентироваться в истории.)

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

Пользуетесь ли вы Vim?
Подробнее..

НЕ VIM, а круче (xah fly keys) или XAH FLY KEYS. Большой выпуск

18.05.2021 00:13:00 | Автор: admin
Если не хотите потратить время зря!

Пока что, эта статья только для EMACS-еров, а изначально создана лишь для меня

Насколько я знаю многие программисты используют VIM, а некоторые тоже используют VIM, но они это делают в EMACS-е, EVIL (злом) режиме, это значит, что эти люди понимают все прелести VIM (быстрое редактирование текста без использования мыши, наличие нескольких режимов и т.д.), но им очень нравится возможность добавлять миллиарды плагинов. Но ещё я знаю, что VIM был сделан несколько миллионов лет назад, для программистов того времени и для того чтобы быть отдельным редактором (не для EMACS), поэтому VIM использует не все возможности которые мог бы, например: Клавиша для входа в командный режим находится в самой жопе углу клавиатуры (и. да я знаю что это можно легко поправить в .vimrc), также если я захочу перейти к редактированию другого файла, то мне нужно:

  1. Перейти в командный режим (Нажав сами знаете куда)

  2. Напечатать `:find` и имя файла

  3. Если я ошибся в имени файла ---> во 2 пункт

Это может занять целую вечность, а менять текущий файл приходиться очень часто! А ещё если вы используйте раскладку dvorak, то как возможно вообще пользоваться VIM-ом? И вообще все клавишы VIM настроены не для того чтобы быстро ими пользоваться, а для того чтобы быстрее запомнить это тоже конечно классно, ведь каждая команда в VIM может превращаться в целое красивое и понятное любому носителю языка, предложение, а XAH FLY KEYS таким похвастаться не может, ведь он крут в другом, быстром редактировании текста, причем если вы пользователь какой-то не популярной раскладке, то лучше вы вряд ли найдете!

Переходим к самому главному в этой прекрасной статье.

XAH FLY KEYS

Все эти недостатки не имеет наш XAH FLY KEYS, он уже был разработан в наше время и не имеет все недостатки VIM, и по моему скромному мнению это самый лучший в мире способ для редактирования текста!

Чуть-Чуть Истории

Этот мощный инструмент разработал XAH LEE, если вы уважающий себя EMACS-ер то вы знаете его имя, ведь этот мудрый китаец придумал ErgoEmacs и возможно вы также пользовались им.

Однако у него есть 1 недостаток (точнее больше, но о них Я вам не расскажу), это не наличие нормальной документации, она конечно есть, но сами посмотрите:

Вам конечно этого может и хватит, но блин XAH FLY KEYS имеет в несколько 10-в раз больше возможностей, которые я попробую объяснить (к сожалению я пользователь QWERTY раскладки и не буду объяснять как всем этим пользоваться на раскладке DVORAK или AZURE).

Установка

На github всё описано, но я всё-таки обьясню краткий способ как это сделать:

  1. Скачать xah-fly-keys через MELPA package manager для EMACS

  2. Вставить и исполнить такой Emacs Lisp код:

    (require 'xah-fly-keys)(xah-fly-keys-set-layout "qwerty") ; обязательно(xah-fly-keys 1)
    

Полбзуемся

Вообще XAH-FLY-KEYS имеет 2 режима: COMMAND и INSERT (как в VIM), но в COMMAND есть тоже несколько режимов или не режимов, а префиксов для HOT-KEYS, сейчас всё объясню чуть по подробнее:

  • INSERT mode - (для вход из COMMAND наберите f) обычное редактирование файла

  • COMMAND mode - (для входа из INSERT наберите Alt+SPACE) режим для набора команд

А если вы в COMMAND mode, то вы можете набрать какую-то буковку и что-то произойдет, например если нажать f, то вы окажетесь в INSERT mode, НО также если вы нажмете SPACE (пробел), то все клавиши изменят свое значения, например если вы нажмете Space f, то вас заставят написать имя буфера для перехода в него, но также есть специальный клавиши и если на них нажать после того как вы нажали SPACE, то клавиши опять изменят свое значение, например если вы напечатайте Space i f, то перейдете в файл путь которого был под курсором.

БАЗА

Начнем с чего-то по проще:

Перемещение

j - влево на один символ

i - вверх на один символ

k - вниз на один символ

l - вниз на один символ

o - вперёд на 1 слово

u - назад на 1 слово

; - вперёд на 1 предложение, Пример:

h - назад на 1 предложение

m - на прошлую закрывающую скобку

. - на прошлую открывающую скобку

/ - на противоположную скобку, Пример:

0 - перейти на место прошлого перемещения.

Это очень удобно, например если вам надо просто добавить import файла, то вы идете сначала в начало файла, пишите импорта, нажимаете 0, и работайте дальше, думая о том что вы гений.

Ctrl+4 - перейти на место следующей ошибки (работает только flycheck-mode)

Ctrl+3 - перейти на место прошлой ошибки (работает только flycheck-mode)

Space H - перейти в начало файла (Space - пробел)

Space N - перейти в конец файла (Space - пробел)

Space p - проскролить (если нажали первый раз -> расположить текущую строчку по середеине экрана, второй раз -> на начало экрана, третий раз -> на конец экрана)

Выделение

8 - выделить текущее слово, если нажмете снова, то выделится вся строка, а потом по одной строке далее

1 - выделить то, что возможно или увеличить, то, что уже выделено

2 или 7 - выделить текущую строку

6 - выделить "блок"

9 - выделить текст в ковычках

t - начать выделять то, где ты двигаешься (VISUAL MODE)

Space a - выделить весь файл

Space o Space - включить режим выделение блоком

Удаление

d - удалить 1 символ позади

5 - удалить 1 символ впереди

e - удалить слово позади

r - удалить слово впереди

x - вырезать строчку если что-то выделено вырезать то, что выделено (см. Копирование/Вставка)

Space g - удалить всё от положения курсора до конца строки

g - удалить блок:

Space k f - удалить все строки, которые подходят к тому, что мы напишим

Space k t - удалить все строки которые совпадают с текущей

Space k g - удалить все строки которые не совпадают с текущей

Space k a - удалить все "пустые" строчки

Редактирование

' - изменить виды разделителей. (Если пробелы -> поменять на подчеркивания, Если подчеркивания -> минусы (тире)), Пример:

z - Закомментировать/Раскомментировать текущую строчку или то, что выделено

w - если нету пробела поставить, если есть удалить.

Очень странная штука.

p - вставить пробел (Для этого не надо переходить в INSERT мод)

b - поменять регистр (Заглавный Регистр, нижний регистр, ВЕРХНИЙ РЕГИСТР)

Space 6 - поменять регистр у всего предложения

Space k e - отсортировать выделенные строчки

Space k p - экранировать все выделенные ковычки (поставить "\" перед ", которые находятся в выделенном тексте)

Space k k - повторить прошлую команду

Space o f - каждую линию обернуть в ковычки или в скобки или в то что вы там напишите, и разделить тем, что вы там выберите

Space o g - превратить пробелы в переходы на новую строку

s - создать новую строчку, но на неё не перейти

Работа с окнами/файлами (FRAMES)

, - перейти в другое окно (FRAME)

4 - разделить окно по горизонтальной линии

Space 4 - разделить окно по вертикальной линии

Space 5 - сделать все окна одинакого размера

Ctrl+7 - следующий буфер (открытый файл)

Ctrl+8 - прошлый буфер (открытый файл)

Ctrl+t - новый пустой буфер

Ctrl+w - закрыть текущий буфер (открытый файл)

Ctrl+s - сохранить буфер (открытый файл)

Space m - просмотреть в dired режиме текущую дерикторию

Ctrl+Shift+s - сохранить буфер как...

Space l b - сохранить все файлы

Space i w - открыть в приложение по умолчанию

Space i g - скопировать полный путь до файла

Space i s - открыть в проводнике файл

Space i f - открыть файл путь которого под курсором (путь не обязательно полный)

Space , Del - удалить текущий файл

Space , x - сохранить все файлы + закрыть редактор

Space , c - запустить текущий файл

При старте поддерживаются вот такие, вот языки:

php

perl

python

ruby

go

haskell

js

typescript

shell

clojure

racket

ocaml

cscript

tex/latex

java

Вид

Space l Space - включить подрисовку пробелов

Space l . - расширить на весь экран (похоже на f11 в вашем браузере)

Space l 2 - подсвечивать текущую строку

Space l 4 - вкл./выкл. показ номера строк

Soace l t - вкл./выкл. перенос строк

Ctrlr+= - увеличить шрифт

Ctrlr+- - уменьшить шрифт

Space l g - создать новое окно и отрыть в нём EMACS с текущим файлом

Плюшки (от Emacs)

Space l 6 - календарь (красивый очень)

Space l 7 - калькулятор (Вот как им пользоваться)

Space l 9 - выполнить команду в теринале

Space l 0 - выполнить команду в терминале, применить к выделению

Space l c - проверить все орфографические ошибки в файле

Space l , - включить браузер в Emacs

Space l d - включить эмулятор терминала в Emacs

Space 9 - проверить на грамотность слово

a - выполнить команду ELisp (тоже самое, что Alt+X)

Помощь. HELP

Space j a - найти все команды совпадающие с нашим шаблоном

Space j j - описать функцию

Space j v - описать горячую клавишу

Space j l - описать переменную

Space j g - дать информацию по всему что у меня есть

Макросы

Space o e - запись макроса

Space o r - стоп записи макроса

Space o h - вызвать последний макрос

Space o w - применить макрос ко каждой выделенной строки

Поиск

n - поиск с переходом, Я не знаю как объяснить, короче вот:

Space k r - поиск + замена, сначала выделит все совпадения так же как и при поиске с переходм, потом будет спрашивать надо ли заменить слово:

  • Напечатайте SPACE, если да

  • Напечатайте DEL, ксли нет

  • Напечатайте ENTER, если пропустить

Space k d - Поиск строк по шаблону (выделенных строк)

Space y - начать поиск текущего слова

Копирование/Вставка

с - копировать (Если ничего не выделено копировать строку)

v - вставить

x - вырезать (Если ничего не выделено вырезать строку)

Работа с регистром 1. WTF?

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

Space k 1 - добавить в регистр 1 выделенный текст (если ничего не выделено -> добавить строку)

Space k 2 - очистить регистр 1

Space k 3 - копировать в регистр 1 = очистить регистр 1; добавить в регистр 1 текст

Space k 4 - вставить содержимое

Кастомизируем

В Emaces любое действие можно сделать через какую-то Eisp фуекцию поэтому настройка также будет на ELisp-е.

  1. Чтобы настроить выполнение какой-нибудь функции при нажатии какой-то клавиши в COMMAND режиме, то :

    (defun my-xfk-addon-command ()  "Modify keys for xah fly key command mode keysTo be added to `xah-fly-command-mode-activate-hook'"  (interactive)  (define-key xah-fly-key-map (kbd "какая-то клавиша") 'имя какой-нибудь функции)  )(add-hook 'xah-fly-command-mode-activate-hook 'my-xfk-addon-command);; Здесь мысоздаем функцию my-xfk-addon-command, ;; которая связывает какую-нибудь функцию с какой-то клавишей.;; а потом с помощью add-hook выполняем эту функцию перед входом в Command mode
    
  2. Чтобы то же самое провернуть только в INSERT ружиме надо выполнить почти такой же код:

    (defun my-xfk-addon-command ()  "Modify keys for xah fly key command mode keysTo be added to `xah-fly-command-mode-activate-hook'"  (interactive)  (define-key xah-fly-key-map (kbd "какая-то клавиша") 'имя какой-нибудь функции)  )(add-hook 'xah-fly-insert-mode-activate-hook  'my-xfk-addon-command);; Здесь мысоздаем функцию my-xfk-addon-command, ;; которая связывает какую-нибудь функцию с какой-то клавишей.;; а потом с помощью add-hook выполняем эту функцию перед входом в insert mode
    

Это всё!!!

Подробнее..

Почему в Vim для навигации используются клавиши hjkl

15.04.2021 18:16:38 | Автор: admin

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

О редакторе vim

Vim (от Vi IMproved) является клоном классического текстового редактора vi для Unix-подобных операционных систем. Vim обладает намного более широкими возможностями, чем свой предшественник. На данным момент это мощный текстовый редактор с полной свободой настройки и автоматизации. Некоторые скажут: Зачем мне какой-то Vim, если есть любимая IDE, в которой все работает? Приведем некоторые причины:

  • Базовый Vim без плагинов поддерживает более 200 языков программирования и форматов конфигурационных файлов (подсветка синтаксиса, автоматическое определение величины отступа для строк). IDE же обычно поддерживает только несколько языков/платформ. С плагинами же в vim можно работать со всем на свете главное, чтобы создатель плагина сделал поддержку специфических для ЯП вещей. Так что можно и код пописать, и текст в LaTex поверстать, и многое другое.

  • Некоторые IDE очень прожорливые и требуют мощной рабочей станции (вспомним хотя бы монструозную Visual Studio). VIM, даже с кучей плагинов, штука довольно шустрая.

  • Vim работает в режиме консоли, поэтому может быть использован в качестве тонкого клиента. Если вы работаете на древней машине 10-летней давности, на которой современные IDE будут тормозить, всю разработку и прогон тестов можно вести на сервере.

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

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

Один из вариантов кастомизации vim Один из вариантов кастомизации vim

Одной из вещей, которые удивляют новичков, является то, что для навигации по тексту используются клавиши hjkl. Перемещаться стрелками можно, но не рекомендуется. Можно выделить несколько причин, почему используются именно эти клавиши.

Как отсюда выйти? (нажать :q) Как отсюда выйти? (нажать :q)

Немного истории

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

Билл Джой, автор оригинального редактора vi, работал в терминале ADM-3A, в котором не было специальных клавиш со стрелками. Если взглянуть на клавиатуру ADM, обнаружится, что стрелки расположены на клавишах hjkl. Итак, Джой использовал ту же логику для vi, которая привела в дальнейшем к vim.

Клавиатура ADMКлавиатура ADM

Однако странно, что в ADM для клавиш со стрелками использовались hjkl. Почему именно эти буквы?

Для этого есть очень веская причина. Вот версия таблицы ASCII 1967 года:

Для кодировки каждого символа используются 7 бит. Первые две строчки (первые 32 символа) это управляющие символы, которые важны для коммуникации, но не являются настоящими символами. Компьютерные клавиатуры, созданные по образцу пишущих машинок QWERTY, нуждались в способе использования ввода этих символов при сохранении той же раскладки. Проблему решили с помощью дополнительной контрольной клавиши для изменения ввода с физических символов на управляющие символы. Удерживание клавиши управления обнулит 6-й и 7-й старшие биты нажатой клавиши. Если вы хотите использовать управляющий символ Backspace, нужно удерживать ctrl + H (или ^H). По этой же причине bash удалит символ при нажатии ^H. Это действие преобразовывает биты 100 1000 кодировки буквы H в 000 1000 - кодировку символа Backspace. Точно так же для разделителя строк нужно нажать ^J.

Если мы посмотрим руководство к ADM, то увидим, что ADM использовал backspace для обозначения переместить курсор влево без удаления текущего символа. Поскольку ^H и ^J уже используются как левая и нижняя стрелка, имеет смысл превратить ^ K и ^ L в верхнюю и правую стрелки. Это означает, что пользователи ADM уже использовали hjkl для навигации, а Билл Джой просто последовал примеру при разработке vi.

Про backspace

Удаление символа производилось с помощью кнопки RUBOUT, которая физически присутствовала на клавиатуре. Ранние компьютеры не использовали соглашение о том, что backspace должен удалять символ.

Клавиши hjkl vs клавиши со стрелками

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

Возникает вопрос, почему не рекомендуется использовать для навигации клавиши со стрелками? Дело в том, что в ОС Unix стрелочные клавиши генерируют последовательность байтов, начинающуюся с кода Esc (27); любая такая последовательность может быть воспринята редактором как требование на переход в командный режим и несколько команд-символов, причем единственный способ отличить Esc-последовательность, порожденную нажатием клавиши, от такой же последовательности, введенной пользователем это измерение времени между приходом кода Esc и следующего за ним. При работе на медленной линии связи (например, при удаленном редактировании файла в условиях медленной или неустойчивой работы сети) этот способ может давать неприятные сбои.


Дата-центр ITSOFT размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.

Подробнее..

Расчеты на прочность в LibreOffice и выбор текстового редактора

09.01.2021 14:22:36 | Автор: admin

Проблемы оформления расчетов и что такое iMath


Наверное, многие, кто учился в техническом ВУЗе, сначала делали вычисления своих курсовых в Mathcad (или другом математическом пакете), а затем старательно набирали эти же формулы в MS Word с подстановкой чисел. Потом забыли про это.


Когда меня взяли конструктором по расчетам на прочность пришлось вспомнить.



Нет, современные технологии МКЭ используются (SolidWorks, Ansys), но формулы с методиками по ГОСТ никто не отменял. Тут принципы не изменились, хотя со времен защиты моего диплома прошло более 10 лет. Люди сначала набирают формулы, уже набранные в Mathcad, а потом руками подставляют каждое число в формулу и записывают результат.


$\boxed{d=\sqrt{8F_2i\over_2}=\sqrt{8 200 5\over3.14 900}=1.68}\text{мм}$


Зачем писать цифры после формулы, если результат считает компьютер?

Это спорное мнение, такие записи действительно иногда помогают найти ошибку. Просто нонсенс делать это руками. Люди пытались решить эту проблему с разных сторон, существуют TechEditor, CalcPad, NormCad, но не о них речь, на практике применяю только 2 решения:


  1. Оформление прямо в Mathcad и распечатка как есть


  2. Оформление в LibreOffice Writer с плагином iMath он считает и подставляет числа



Подход 1 применим не для всех документов:


  • рамки ГОСТ, таблицы, автонумерацию рисунков, ссылок в Mathcad не особо реализуешь


  • для "оформленных" расчетов требуют подставлять числа и перечислять переменные с пояснением после формулы:


    $$display$$ \boxed{d=\sqrt{8F_2i\over _2}=\sqrt{8 200 5\over3.14 900}=1.68}\text{мм,}\\ \begin{align} \text{где } & \boxed{F_2=200}\text{Н - рабочее усилие на пружине;}\\ & \boxed{i=5}\text{ - индекс пружины;}\\ & \boxed{_2=900}\text{МПа - допускаемое напряжение сдвига.} \end{align} $$display$$


    если подставить значения можно в старом Mathcad 15, то с присвоением значений после формулы проблемы что в Mathcad 15, что в Mathcad Prime


  • общее ограничение оформительских возможностей, нельзя вывести значение переменной без её имени и знака равенства, например



Подход 2 тоже ограничен возможностями iMath, и иногда приходиться копипастить таблицы из Mathcad в LibreOffice Writer, но не приходится хотя бы каждую цифру руками набирать в каждой формуле.


Зачем нужен text expander при наборе формул iMath


Простой пример (серым показан исходный текст):


$$display$$ \boxed{ \color{gray}{\text{%ii @nospace\{%DELTA x\}@ EQDEF nospace\{%DELTA x\}=10}}\\ \Delta x=10 } $$display$$


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


Назначим сниппеты по аналогии с Mathcad, где это делается так: D, Ctrl+G , у нас будет так: DG . Тогда и читать исходник формулы станет проще:


$$display$$ \boxed{ \color{gray}{\text{%ii @x@ EQDEF x=10}}\\ \Delta x=10 } $$display$$


Из бесплатных программ остановился на этих, они решают проблему:


  • aText (некоторые функции платные, пока без них приемлемо) Windows7+/MacOS
    Здесь лежат греческие буквы и другие сниппеты для оформления расчетной документации, загружаются через FileОткрыть и надо выбрать csv в диалоге, перед загрузкой можно удалить Default Group и Examples
  • espanso Windows8+/MacOS/Linux

Причем здесь текстовый редактор


Проблема 1. Чтобы отобразить переменные после формулы, нужно просто присвоить их скрытно перед формулой и затем отобразить после формулы их значения (серым показан исходный текст)


$$display$$ \boxed{\small\color{silver}{ \text{%%ii @F_2@ EQDEF* F_2=200}\\ \text{%%ii @i_{}@ EQDEF* i_{}=5}\\ \text{%%ii @_2@ EQDEF* _2=900} }} \boxed{ \small\color{silver}{ \text{%%ii @d@ EQDEF d=sqrt{{8 F_2 i_{}}over{%pi _2}}}\\ \text{%%ii TEXT =sqrt\{\{8 _ii_VAL(F_2)_ii_ _ii_VAL(i_\{\})_ii_\}}\\ \text{over\{_ii_VAL(%pi)_ii_ _ii_VAL(_2)_ii_\}\}=_ii_VAL(d)_ii_} }\\ d=\sqrt{8F_2i\over_2}=\sqrt{8 200 5\over3.142 900}=1.682 }\text{мм,}\\ \begin{align} \text{где } & \boxed{\small\color{silver}{\text{%%ii PRINTVAL F_2}}\\F_2=200}\text{Н - рабочее усилие на пружине;}\\ & \boxed{\small\color{silver}{\text{%%ii PRINTVAL i_{}}}\\i=5}\text{ - индекс пружины;}\\ & \boxed{\small\color{silver}{\text{%%ii PRINTVAL _2}}\\_2=900}\text{МПа - допускаемое напряжение сдвига.} \end{align} $$display$$


В чем проблема? А в подстановке значений. Здесь пришлось скопипастить d=sqrt{{8 F_2 i_{}}over{%pi _2}}}, немного изменить до вида =sqrt{{8 F_2 i_{}}over{%pi _2}}}=d и обернуть каждую переменную в _ii_VAL()_ii_. На практике это быстрее чем вместо оборачивания выискивать значения и вписывать их. Но работа лишняя.


Автоматизировать эту подстановку в iMath проблематично, но можно зайти с другого конца сделать эти правки с помощью макросов в текстовом редакторе.


Проблема 2. Вместе со сгенерированным текстом исходник формулы довольно тяжело воспринимается


%%ii @d@ EQDEF d=sqrt{{8  F_2  i_{}}over{%pi  _2}}d=sqrt{{8  F_2  i_{}}over{%pi  _2}} %%gg%%ii TEXT =sqrt{{8  _ii_VAL(F_2)_ii_  _ii_VAL(i_{})_ii_}over{_ii_VAL(%pi)_ii_  _ii_VAL(_2)_ii_}}=_ii_VAL(d)_ii_=sqrt{{8  200  5}over{3,142  900}}=1,682 %%gg

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


Проблема 3. Часто приходится искать пропавшую скобочку. Во встроенном редакторе формул подсветку парных скобок никак не добавят. Тоже решается использованием внешнего редактора


Разработчик iMath, Jan Rheinlaender, пошел мне навстречу и добавил редактирование формул из внешнего редактора. Дело за малым выбрать его и настроить.


Требования к редактору такие:


  • Бесплатность
  • Макросы
  • Множественное редактирование (потребуется для использования в макросах, и просто удобно)
  • Подсветка пользовательского синтаксиса
  • Подсветка парных скобок
  • Удобство редактирования английского текста вперемешку с русским, чтобы набирать такое, например:
    Q_д=0.785  D_сп^2  p
    
  • Кроссплатформенность (желательно)
  • Сохранение без подтверждений при закрывании (желательно)

Сравнение текстовых редакторов


Sublime Text


Этот редактор выглядит привлекательнее остальных. Формально он не бесплатный, но напоминает об этом даже не каждый день и ничем больше не досаждает.


Смотрим, можно ли настроить подсветку своего синтаксиса. Да, у него есть возможность описать его в yaml. Пишем файл подстветки, результат выглядит отлично:



Теперь записываем макросы: Ctrl+Q, Ctr+F, пишем регулярку для выделения переменной, выделяем, переводим курсор влево, пишем _ii_VAL(, выделяем регуляркой опять, переводим курсор вправо, пишем )_ii_, Ctrl+Q. Проверяем что получилось запускаем макрос с помощью Ctrl+Shift+Q. И ничего. Не выделяется оно, и люди жалуются с 2009. Да...


Ладно, разберёмся позже. Попробуем пока настроить Sublime, чтобы он сохранял файл без подтверждений и выходил по одной кнопке. И тут снова проблема в Sublime нельзя назначить 2 действия на один шоткат. Окей, ставим плагин для поддержки назначения нескольких действий, но сохранить без подтверждений и закрыть редактор все равно не получается. Не проблема у нас же есть макросы! Нажимаем Ctrl+Q, запись пошла, нажимаем Ctrl+S сохранились, теперь выходим...



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


Vim


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


Однако даже при решении проблемы с русской раскладкой остается вопрос: сколько инженеров использует vim в своей работе? Его даже из программистов только часть использует. Откладываем vim в сторону и ищем дальше.


[W]indows [L]inux [M]acOS WLM WLM W__ WLM W__ W__ WLM WLM
поиск регулярками + + + + + + + +
замена внутри выделения + + + + + + + +
подстановки (\0, \1, ...) + - + + + + + +
добавить курсор мышью + + + + - + + ?
добавить выделение совпадения ^D ^D - ^D - - ^D +
выделить все совпадения F3 - - - ^ - ?
выделить все совпадения из диалога поиска E - - - - - ?
добавить курсор строкой ниже ^ - - - - - +
макрос редактирования текста + + + - + - + +
запись поиска - + + - - - + +
подсветка парных скобок + + + + + + + +
возможность определить сложный синтаксис + + ? ? ? +
удобство работы с русским текстом + + + + + +
поддержка плагинов + + + + - + +
менеджер плагинов + + + - + - - +
палитра команд ^P ^P ^M - - - ^E -

Клавиши (для Windows): ^ Ctrl, Shift, Alt, Space, Enter, стрелки, не назначено
делается плагинами
требует настройки
по умолчанию русский текст не отображается, нужно активировать code.page=65001 в файле настроек
шоткат NppMenuSearch конфликтует с пометками, нужно перенастраивать
шоткаты, содержацие буквы, работают только в английской раскладке
конфликтует с шоткатом переворачивания экрана
есть шоткат , но на самом деле он выполняет прямоугольное выделение
без настройки нижнее подчеркивание не очень заметно


Что тут можно обобщить? Удивляют 2 вещи: невозможность записи поиска в макросах Sublime и невозможность (или я плохо искал?) подстановки при поиске с заменой в Cuda. Тем не менее, выбора в общем-то и нет.


Logo Название Версия Дата Текстовый компонент Решение
Sublime Text 3.2.2 01.10.19 Cвой (на Skia) Нужные макросы не записать
CudaText 1.118.2.0 29.12.20 Свой Подходит
Notepad++ 7.9.2 01.01.21 Scientilla Слабые возможности редактирования текста
SciTE 4.4.6 01.12.20 Scientilla Макросов вообще не нашел
AkelPad 4.9.8 18.07.16 Scientilla Нужные макросы не записать
Notepad3 5.20.915.1 15.09.20 Scientilla Блокнот я им заменил, но нужные макросы не записать
Textadept 11.0 01.12.20 Scientilla / Curses Шоткаты на русской раскладке не работают
Vim 8.2 10.12.20 ? Сколько инжеренов его знает?

CudaText


И так, берем CudaText. Он поставляется как portable zip-архив. В wiki что-то пишут про не portable версию, но инсталлятора я не нашел. Хорошо это или плохо? Устанавливающаяся версия кажется понятнее все настройки лежат в %APPDATA% и их можно хранить в репозитории. А здесь? Окей, положим весь редактор в репозиторий, 25Мб это не так много, зато на другой машине не надо будет устанавливать запустил из репозитория и голову не забиваешь. Надо сказать, что настройки хоть и хранятся в той же папке, что и редактор, при заливке в нее новой версии не перетираются, неудобство только в том что нужно руками распаковать новую версию. Первый запуск:



Эстетически выглядит норм, но как-то не контрастно всё. Ладно, это настроим. Так, убираем все что нам не нужно для набора формул. Включаем подсветку парных скобок и перенос по словам. Так же убираем поведение с последней строкой вверху экрана при прокрутке до упора (не привычно), автозакрытие скобок (польза спорная, а записи макросов иногда мешает). Statusbar оставляем, чтобы видеть, когда включен режим записи макроса.


Выбираем Options Settings default/user, пишем


{  "wrap_mode" : 1,  "wrap_indented" : false,  "ui_statusbar_show" : true,  "ui_sidebar_show" : true,  "find_hidden_buttons": "c",  "bracket_highlight" : true,  "ui_toolbar_show" : false,  "ui_theme" : "white",  "ui_theme_syntax" : "white",  "ui_font_name" : "default",  "ui_font_size" : 9,  "font_name" : "Lucida Console",  "font_size" : 10,  "ui_title_path" : true,  "ui_menu_show" : false,  "ui_tab_show" : false,  "gutter_show" : false,  "gutter_fold" : false,  "show_last_line_on_top" : false,  "log_sessions" : false,  "py_init_log" : false,  "auto_close_brackets": ""}

Теперь команды меню доступны только по кнопке ' ' слева вверху и через меню Ctrl+Shift+P (как в Sublime). Текущая вкладка, крестика которой теперь не видно, закрывается по Ctrl+W


Нужно выбрать тему поконтрастнее.



Но тратить время на это не придётся светлая контрастная тема одна white (вторая слева).


Из оригинального: если увеличить высоту окна, слева появится кнопка '', которая показывает список специальных символов



Но нам это не нужно мы используем aText для набора греческих и математических символов.


Теперь надо установить плагины: Auto_Save и Macros. Устанавливаются они как в Sublime: Plugins Addons Manager Install..., ну или через Ctrl+Shift+P и наборе чего-то типа plugin:Install+Enter. Через некоторое время появится список доступных плагинов



Тут все понятно. Надо только обратить внимание, что плагины разбиты по категориям. и для фильтрации можно набирать название этой категории с ':', например, 'theme:' для просмотра всех неустановленных тем. И еще: установленные плагины не отображаются в списке, для них есть пункт меню Plugins Addons Manager Remove add-on...


Сначала повесим шоткаты на команды макроса (из коробки таких шоткатов нет). Если в Sublime это делалось правкой конфига через PreferencesKey Bindings, то здесь это делается оригинально:


  • надо нажать Ctrl+Shift+P, выбрать требуемую команду, например 'macros: start recording'
  • нажать F9
  • в появившемся окне нажать кнопку "Set"
  • нажать комбинацию клавиш
  • нажать ОК

Назначаем Ctrl+Q для "macros: start recording" и Ctrl+Shift+Q для "macros: stop recording".


Настройки эти сохраняются в файле settings/keys:


..."2810" : {    "name" : "macros: start recording",    "s1" : [ "Ctrl+Q" ]  }...

Но можно ли дописывать шоткаты прямо в файле и назначать произвольные цифровые айдишники не ясно.


Основная задача записать макрос iMath:explain EQDEF, который будет копировать выражение, ставить переменную в конце после '=', оборачивать переменные в _ii_VAL( и )_ii_ и еще будет переименовывать @метку@. Задача большая, поэтому разобъем её на более мелкие. Здесь приведу запись только одной. Итак, записываем макрос, который обернет переменные в _ii_VAL( и )_ii_:


  • Ctrl+Q запись пошла
  • Вначале надо подписать всем ключевым словам @@ впереди, чтобы не обернуть их нечаянно. CudaText это единственный редактор без поддержки замены с подстановками вместо групп совпадения типа \0, \1, ..., поэтому будем пользоваться мультивыделением. Жмем Ctrl+F, пишем регулярку \b(abs|acute|aleph|alignb...widetilde|widevec|wp|yellow)\b, жмем Alt+E, Esc теперь у нас выделены все ключевые слова, жмем , вписываем @@
  • Выделяем строки, начинающиеся на %%ii TEXT с помощью регулярки (?<=^%%ii\s+TEXT).*$
  • Выделяем внутри выделения числа и переменные с помощью регулярки (?<=[^%@'"])(\d+\.\d+|%\w+_\{[^{}]*\}|%\w+|\b\w+_\{[^{}]*\}|\b\w+)(?!.*%%gg$)
  • С прыжками курсора влево вправо возиться лениво ну что ж, затрем буфер обмена, Ctrl+X
  • Пишем _ii_VAL(, Ctrl+V, )_ii_
  • Удаляем @@ простой заменой по всему документу
  • Ctlr+Shift+Q закончили запись, назначаем имя imath:_ii_VAL()_ii_ all
  • Теперь он появился в списке команд назначаем шоткат по той же схеме: Ctrl+Shift+P, выбрать макрос imath:_ii_VAL()_ii_ all(не нажимая Enter), F9, назначаем Ctrl+Shift+V

Макрос можно править (что я и делал), он лежит в settings/macros.json. Примерно такими же хитрыми манипуляциями записываем остальное. При записи макроса можно вызывать другой макрос.


Теперь настроим Auto_Save. Ctrl+Shift+P ищем plugin:Auto Save: config, правим конфиг


[op]save_interval=30save_before_closing_tab=1on_deactivate=0

Теперь Cudа будет сохранять файлы ничего не спрашивая, таким образом правка формулы в Cuda будет происходить по той же логике, что и правка в LO Math. Ещё я назначил "file:quit program" шоткат F3 (у меня и в iMath редактор вызывается по F3) чтобы открыть/закрыть двумя нажатиями одной кнопки.


Осталось настроить подсветку синтаксиса. Wiki говорит, что чтобы создать свой лексер, нужно установить SynWrite и потом, видимо, удалить и забыть про него. Действуем по этой инструкции.


  1. Устанавливаем SynWrite
  2. Options Customize lexers library..., копируем какой-нибудь простой язык или добавляем новый с именем eqn
  3. View Lexer Выбираем свой новый лексер
  4. Options Customize lexer...
  5. Накидываем стили из других языков с помощью кнопки "Import Items" (красная стрелка с листом бумаги)

  6. Добавляем правила

  7. Копируем файлы eqn.lcf и eqn.cuda-lexmap из SynWrite\Data\lexlib в cudatext\Data\lexlib
  8. Перезапускаем редактор, вставляем тестовый текст, нажимаем Ctrl+Shift+P, eqn, Enter. Появляется окно


    Выбираем подходящие по смыслу стили и нажимаем ОК, лексер заработал:


Вот и все. Теперь заниматься оформителькой писаниной стало гораздо легче! Настройки можно взять здесь (нужно распаковать в папку, в которую распаковали редактор)



Заключение


Конечно, я пропустил много популярных редакторов (те же Atom и Visual Studio Code). Но все равно странно казалось, подойдет любой продвинутый, а подошел только один, причём в других не хватало простых вещей. Хотелось поделиться обнаружением этого редактора. Еще хотел поделиться способом оформления расчетной документации (или курсовых) с помощью iMath (плагин еще тот по стабильности и эргономичности, но другого нет).


Страница скачивания LibreOffice тестировал на 7.0, но и 6.4 должен работать
Страница скачивания iMath скачивать нужно iMath-2.3.1~beta2.oxt
Обсуждение фичи iMath "open in external editor" на sourceforge.net про настройку iMath
Документация по iMath
Страница скачивания CudaText
Настройки CudaText для работы с iMath (нужно распаковать в папку, в которую распаковали редактор)
CudaText на github.com
CudaText на sourceforge.net здесь только плагины
Настройки aText для набора греческих символов и не только открываются по Ctrl+O из aText

Подробнее..

Из песочницы Ты еще не используешь tmux наполную! (Наверное)

25.08.2020 12:13:42 | Автор: admin
Привет, Хабр! Представляю вашему вниманию перевод статьи "(tmux".

Содержание


  • Что такое tmux
  • Запуск и начало новой сессии
  • Открытие нового окна
  • Переходы между окнами
  • Разделение окон и создание панелей
  • Передвижение между панелями
  • Передвижение между сессиями
  • [Практическое использование] Переадресация отображаемого содержания в tmux
  • [Практическое использование] Отображение названия ветки Git в информационном поле
  • [Практическое использование] Отображение пути текущей операции
  • [Практическое использование] Вызов сниппета
  • Ссылка на настройки .tmux.conf
  • Совместимость версий tmux

Что такое tmux


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

Но возможности tmux на этом на этом не заканчиваются. Есть различные удобные варианты использования tmux, что я и хочу продемонстрировать на примерах ниже.

Базовая идея похожа на моды в Vim. С помощью prefixa (зарезервированные key bindings или привязка клавиш) можно изменить мод, по умолчанию используется привязка ctrl + b.

Запуск и начало новой сессии


Если ваша ОС Ubuntu или Debian, вы можете установить tmux командой `sudo apt-get install tmux`. На MacOS brew install tmux.

Команда для запуска:

$ tmux

Если хотите запустить tmux и сразу дать название новой сессии, используйте эту команду:
$ tmux new -s { Название сессии }

image

Открытие нового окна


Создав сессию в tmux, вы также можете создавать новые окна. Стандартная связка ctrl +b + c. Если вы сохранили свой prefix, можете использовать связку prefix + c. Скорее всего, значение c create, отсюда и такая связка.

image

Переходы между окнами


Можно также свободно переключаться между созданными окнами. Стандартные связки для этого prefix + p (p previous) и prefix + n (n next).

Использовать prefix не всегда удобно, поэтому я для себя кастомизировал связки клавиш для перехода между окнами: shift + rightKey для следующего окна и shift + leftKey для предыдущего.

image

Разделение окон и создание панелей


Разделение окон в tmux похоже на разделение в vim. Вы делите окно на несколько панелей, тем самым в одном окне можно открыть vim, в другом htop, а в третьем выполнять программу.

Без привязки клавиш, команды для разделения окна prefix + split-window -h, prefix + split-window -v.

Так как прописывать это каждый раз не особо хочется, я сделал для себя хоткеи в виде prefix + "-", prefix + "|".

image

Передвижение между панелями


Стандартные команды для передвижения между панелями сложноваты, не очень удобны в обращении, поэтому я и в этом случае назначил свои хоткеи: ctrl + shift + upKey, ctrl + shift + downKey, ctrl + shift + rightKey, ctrl + shift + leftKey.

image

Передвижение между сессиями


С помощью связки клавиш ctrl + t можно вызвать список сессий, а клавишами выбрать нужную сессию.

image

[Практическое использование] Переадресация отображаемого содержания в tmux


По сути, tmux является своего рода виртуальным терминалом, содержащимся в директории /dev/pts/{fooBar}. Для каждой панели создается такая же директория.

Другими словами, если мы определим {fooBar} каждой панели, мы сможем передавать содержимое панели X, разделив, например, на stderr и stdout, на панели Y и Z.

Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишите, а также использовать терминал как лог операций.

image

[Практическое использование] Отображение названия ветки Git в статус баре


Это лайфхак, который использует возможность чтения Shellscript и Python script из .tmux.conf файла конфигурации tmux.

Статус бар можно настроить следующей командой:

set-option -g status-right '#{host} #(tmux run-shell "tmux_hook --default true --git-path #{pane_current_path}")'

#{host} это, очевидно, имя хоста, а tmux run-shell запускает настраиваемый скрипт, который возвращает value в настройки статус бар.

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

image

[Практическое использование] Отображение пути текущей операции


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

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

setw -g pane-border-format '#{pane_tty} | #{pane_current_path}'

image

[Практическое использование] Вызов сниппета


Несмотря на то, что tmux является менеджером сессий с функцией разделения терминала, он может выполнять некоторые функции IDE (круто, не правда ли?). Вы можете забиндить свои хоткеи на специальную настройку send-keys и вызвать их в терминале.

Например, если настроить send-keys как на моем примере ниже, можно просто нажать prefix + 1 и вывести команды import, необходимые для работы с python.

bind -T prefix -n 1 send-keys "import os\nimport sys\n"

image

Ссылка на настройки .tmux.conf


Вот тут

Совместимость версий tmux


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

Все вышеописанное и конфиг, на который я оставил ссылку, для tmux версии 2.8 и выше. Если у вас что либо не работает, проверьте, подходит ли вам данная версия.

Если вы соберетесь самостоятельно что-то отлаживать, то прежде всего стоит обратиться к man tmux самой надежной документации по tmux на данный момент.

Ссылка на оригинал данной статьи тут

Мы будем очень рады, если вы расскажете нам, понравилась ли вам данная статья, понятен ли перевод, была ли она вам полезна?
Подробнее..
Категории: Терминал , Оболочки , Vim , Tmux

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru