Использование Git для двусторонней синхронизации заметок
Для синхроницации заметок на всех устройствах я использую GIT. Это просто: сначала нужно закомиттить локальные изменения, потом подтянуть изменения с сервера и позволить GIT смержить все конфиликты автоматически - для текстовых файлов это не принципиально. Затем запушить результаты мержа опять на сервер.
Процесс только звучит сложно, если делать его регулярно оно превращаесят в рутину и не требует больших усилий. Если сделать alias то тогда синхронизация будет делается в одну команду:
alias nmds='git add * ; git commit -am'\''autocommit'\'' ; git pull origin master --no-edit ; git add * ; git commit -am'\''autocommit, fix conflicts'\'' ; git push origin master'
Работает на Linux и на Termux под Android на Windows можно сделать аналогичный bash файл. Надеюсь кому-нибудь пригодится.
Автоматизизация терминала в Linux
В Линукс существует мега полезная утилита screen. При помощи нее можно создавать виртуальные терминалы в терминале которые будут выполняться фоном так, что можно не бояться что соединение прервется и вы потеряете результат выполнения программы. Однако, команда screen это не просто виртуальный терминал, это нечно большее.
Например, с ее помощью в терминал можно послать команду, выполнить ее и получить результат ее выполнения в тектовый файл. Это можно использовать для автоматическомго тестированиия консольных утилит.
# запускаем screen
screen -S some_window
В другом терминале делаем следующее:
# пишем ls
screen -S some_window -X stuff 'ls'
# посылаем возврат каретки
screen -S some_window -X eval "stuff \015"
Чтобы видеть то что происходит в другом терминале подключаем вывод в файл:
# задаем местоположение файла для вывода
screen -S some_window -p 0 -X logfile ~/filename.txt
# включаем вывод в файл
screen -S some_window -p 0 -X log on
Все что происходит в пользовательской сессии "some_window" будет доступно в файле ~/filename.txt.
Клавиша Compose
Клавиша compose позволяет вводить специальные символы в Linux типа ä или á.
Для этого нужно сначала коротко нажать compose затем клавишу модификатор, например ', затем модифицируемую клавишу, например e.
compose . e | ė |
compose ' e | é |
compose " e | ë |
compose _ e | ē |
compose - e | ē |
compose ? e | ẻ |
compose # e | ♪ |
compose s s | ß |
Еще больше сочетаний можно найти на страничке в википедии посвященной клавише Compose.
Физически на клавиатуре нет клавиши Compose. В качестве клавиши Compose можно назначить любую клавишу по выбору. По умолчания в Linux в качестве Compose настроен правый ctrl.
Получается, с клавишей Compose для набора текстов на немецком или испанском языках специальные национальные клавиатуры становятся не нужны.
Однако, с этой клавишей есть одна существенная проблема - клавиша Compose не поддерживается из коробки в Windows но есть большое разнообразие программ для ее емуляции например WinCompose. Для Macos все сложнее, на маке используются собственные сочетания клавиш для набора специальных символов и диакритики, поэтому проектов для поддержки клавиши Compose не так много но они тоже есть.
Копирование текста из терминала без мыши
При работе в терминале, иногда бывает необходимо скопировать часть экрана без помощи мыши. Для решения этой задачи вам может пригодиться команда screen которая значительно расширяет возможности работы со стандартным терминалом.
Одной из полезных функций этой программы является так называемый copy-режим когда экран можно скролировать и выделять.
Чтобы скопировать часть экрана в терминале а потом вставить проделайте следующее:
- Запустите команду screen
- Для входа в copy-режим нажмите CTRL-A ESC
- Стрелками или клавишами hjkl перейдите в начала блока, который нужно выделить
- Нажмите ENTER для начала выделения
- Стрелками или клавишами hjkl перейдите в конец выделения, при этом выделенный фрагмент будет подсвечен
- Нажмите ENTER еще раз. Команда screen перейдет в нормальный режим.
- Для извлечения скопированного фрагмента из буфера наберите CTRL-A ]
Screen может пригодиться и для многих других вещей, например, для сохранения долгой терминальной сессии на сервере, когда нет возможности поддерживать соединение постоянно.
Вот здесь нашел хорошую шпаргалку на этот случай.