Делимся своими хаками/алиасами/прогами для консоли
Публичный постУ каждого, кто пользуется консолью на каждодневной основе, рано или поздно возникает список любимых прог/настроек/надстроек и просто алиасов. Я предлагаю каждому заделиться своими любимыми приблудами.
Проги:
nvtop -- как htop, только для видеокарт. Висит у меня в отдельном окне tmux вместе с htop. Посматриваю, если гружу карточки, чтобы вовремя уловить проблемы.
Настройки и надстройки:
vim:
" set 'updatetime' to 3 minutes when in insert mode
au InsertEnter * let updaterestore = &updatetime | set updatetime=300000
au InsertLeave * let &updatetime = updaterestore
" automatically leave insert mode after 'updatetime' milliseconds of inaction
au CursorHoldI * stopinsert
через 5 минут бездействия выходит из инпут режима. Бывает оставлю редактор на середине строки, а когд прийду начинаю с нажатия i/a.
еще vim:
:command CurDiff w !diff % -
function! s:DiffWithSaved()
let filetype=&ft
diffthis
vnew | r # | normal! 1Gdd
diffthis
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
com! DiffSaved call s:DiffWithSaved()
nnoremap <F4> :DiffSaved<Enter>
два разных способа посмотреть дифф между сохраненной версией и тем, что сейчас наредактировано. Один просто запускает дифф, второй запускает две панели.
Функции для консоли:
tabview () {
cat $1 | sed 's/,/ ,/g' | column -t -s, | less -S
}
Регулярно смотрю csv таблички в консоли таким образом.
ftext () {
grep -iIHrn --color=always "$1" . | less -R -r
}
Просто готовая обертка параметров для стандартного грепа, чтобы красиво грепать в своих же файлах.
Как водится, мои конфиги лежат на гите.
Я серьёзно
Вчера только узнал про pbcopy на маках.
Скопирует содержимое result.txt в буфер
tldr
https://github.com/tldr-pages/tldr
Каждый раз когда я пытаюсь вспомнить как же там добавить боди в курл или какой там синтаксис у git branch...
alias 2ip='curl ifconfig.co'
//покажет твой внешний айпишник
Мой единственный лайфхак - поменьше пользоваться консолью
Алиасы и прочую ботву можно посмотреть в .zshrc, все перечислять нет смысла, но без алиасов позволяющих вместо всяких неудобных пальцеломающих
| grep -i
писатьGi
я жить не могу.Еще у меня есть специальный костыль для удобства работы с кучей проектов/репозиториев/компонент - просто делаешь
init_project foo/bar
первой командой после спавна нового шелла - и он переходит в нужную директорию, соурсит всякие энвайроменты (из директории проекта и выше) и выставляет компактный промпт и заголовок окна чтоб время проведенное там автоматически трекалось трекалкой времени (сейчас почти не использую, а когда фрилансил с отчетами по часам затраченным на разные вещи - было очень актуально).Из тулзов люблю:
cd
иногда.Плагины для вима я перечислять, пожалуй, не буду, отмечу лишь единственный работающий комплишн и удобную прыгалку по буферам
Наверное, из вышенаписанного можно догадаться, что живу я преимущественно в консоли (20+ терминалок на 10 воркспейсах - норма) и при этом не знаю и не юзаю наверное и 20% фич всех тулзов что я когда-либо прикручивал, зато то что использую - сидит где-то на уровне спинного мозга.
The Fuck - https://github.com/nvbn/thefuck
Если предыдущая команда завершилась с ошибкой (забыли судо или опечатались в команде для гита, например),
fuck
исправляет предыдущую команду и иногда предлагает несколько вариантов решения.Вот эта штука.
Пишешь, например,
curl
, нажимаешь кнопку вверх и бегаешь по хистори только курлов. Удобно!https://twitter.com/ctrlshifti/status/1160812366293901314
Чтобы писать код на локальной машине и быстро синкаться с дев-машиной, я делаю два алиаса для rsync, один на сервер пушит, другой с него забирает.
Особенно удобно, когда интернет плохой и ssh тоннель периодически рвётся.
Когда у вса автоскейлинг архитектура и надо иногда заходить на инсты по ssh:
alias recall='cat ~/.histfile | grep '
(zsh)или
alias recall='cat ~/.bash_history | grep '
(bash)Когда забыл, к какому адресу подключался по SSH, или просто не помню какую-нибудь длинную ублюдскую командную строку
может быть, кто–то найдёт для себя интересные софтины или настройки/алиасы: https://github.com/golman/.files
+ надо окончательно перейти с рэнджер на n³ и с неовима на емакс в эвил мод
небольшой, но очень полезный гист, если ваш опсос не разрешает раздавать инет с телефона
сам терминал, где всё это запускать — китти
exa
вместоls
(с алиасомl
)bat
вместоcat
htop
вместоtop
fdfind
вместоfind
и
cd() { builtin cd $@ && exa --header --long }
ибо после каждогоcd
в 9 из 10 случаев делаю потомls
(но, возможно, это мой личный загон)p.s. Давно пытаюсь в классический вим/неовим уже который раз, но не могу найти способ адекватно настроить работу в нормальном режиме с учетом переключения раскладки, все-таки на кириллице я тоже немало пишу. Это возможно?
(До этого несколько лет использовал разную ВИМуляцию в других редакторах: сначала несколько лет Vintage в SublimeText, сейчас в VS Code c аналогичным плагином, но они лагают при быстром наборе текста, особенно VS Code, плюс частично тоже есть проблемы).
fish как и zsh по табу дает автокомплит и выбор подходящих команд
нумерую многие свои алиасы префиксами
00_
11_
то есть для ввода алиаса(который уже не помню точно) набираю в терминал
1
и tab'аю дважды, после чего уже выбираю нужный алиас стрелочками из появившегося спискаПара штук для fuzzy-поиска
fzf - поиск по истории и **TAB 👍 https://github.com/junegunn/fzf
git-jump - моя поделка для поиска веток гита. https://github.com/mykolaharmash/git-jump
Клевые cli тулзы
bpytop
- мега крутая альтернатива htop (https://github.com/aristocratos/bpytop)logo-ls
- альтернативаls
с цветными иконками (https://github.com/Yash-Handa/logo-ls)glow
- просмотр markdown файлов в терминале с клевым рендерингом, подсветкой кода (https://github.com/charmbracelet/glow)prettyping
- собсно, красивыйping
(https://github.com/denilsonsa/prettyping)Лайфхаки по алиасам
#comment
без создания отдельного алиаса для нее:blablabla very long command --flag1 --flag2 --flag3=kek #comment
cpwd='pwd | tr -d "\n" | xclip -selection clipboard'
: Скопировать текущуюpwd
в системный буфер обмена и обрезать\n
(требует установленный xclip) - удобно перехода в ту же директорию скажем в соседнем окне терминала:cpls=path/to/script_below.sh
: Скопировать путь к файлу или папке в буфер обмена (путь к скрипту ниже повесить на алиас)v
- nvim, так быстрееpcd
='find . -type d -name __pycache__ -exec rm -r {} \+'
: удалить рекурсивно все папки__pycache__
в текущей и подпапкахpy
=python3
pym
=python3 -m
Пользуюсь Fish как основным шеллом - имеет хорошее автодополнение из коробки и работает быстро. Никак правда не привыкну к несовместимости с bash и часто переключаюсь на него если нужно написать что-то нестандартное.
Вместо grep обычно пользуюсь https://github.com/piranha/goreplace
Вместо man - https://github.com/raylee/tldr-sh-client
Если возможностей awk/sed и прочих не хватает или все выходит слишком сложно - https://github.com/tobimensch/termsql. Позволяет применить полноценный SQL (работает на SQLite) для работы с текстом.
SSH-ключи у меня запаролены, поэтому, чтобы немного упростить себе жизнь, пользуюсь keychain (что наверное не очень безопасно).
https://github.com/jarun/nnn - файловый менеджер с кучей плагинов, из коробки поддерживает https://github.com/rclone/rclone для взаимодействия с разными файлопомойками
Предотвращает появление vim 🌚 при многострочном режиме редактирования, удобно для сложных, но одноразовых скриптов в консоли.
Пробовал юзать разные тудушки, но понял что мне достаточно одного текстового файла
td - отображаем задачки
tde - редактируем задачки и после закрытия вим коммитим их
n - открываем вим в директории с заметками
nt - открываем временный файл в директории с заметками
nu - если нужно быстро закоммитить все это дело
Алиасы для быстрого перехода по директориям
Но с недавних пор я открыл для себя zoxide и эти алиасы юзаю нечасто
Вот репа с .dotfiles
К примеру там есть функции добавляющие fuzzy search к git и алиасы
Из консольных утилит юзаю и советую
vim/neovim