Tag Archives: tmux

Комфорт в терминала

от Владимир Колев
лиценз CC BY-NC-ND
Терминал

Със следната статия ще ви покажа как да направите ползването на терминала малко по-удобно и разбира се приятно. Все още много потребители намират ползвато на текстовата работна среда за неудобно и стряскащо, но моето лично мнение е, че тя може да бъде доста приятна и примамлива, също както едно време беше модерно на графичната среда да се активират какви ли не ефекти, което спомогна за популяризирането на някои десктоп Линукс базирани дистрибуции.

Инстументите, които ще покажа тука са следните: zsh и tmux (други мисля, че вече сме си споменавали в по-стари статии като cmux, irssi, alpine).

Zsh (Z Shell)

Е алтернатива за bash (bourne-again schell), но много по-конфигурируема и също така разпространена. С какво обаче е по-различен и за предпочитане пред инсталирания по подразбиране в много дистрибуции bash:

  1. Функционира изключително близко до bash, което позволява на потребителите да не се налага да се учат на ново как да го ползват
  2. Предлага корекция на правописа. Предполагам ви се е случвало в бързината да напишете команда и да изпуснете/заместите буква. Zsh се опитва да разпознае командата и ви предлага да я замести преди да се опита да изпълни сбърканата от вас команда.
  3. Изключително конфигурируем (както, между другото, вече споменах).
  4. Много добро и коректно допълване с клавиша [Tab]
  5. Споделена история между сесии – ако сте стартирали няколко zsh-сесии едновременно, то те ще си споделят историята
  6. Вграден пейджър – това можете да го разбирате като вградена less функционалност. Така можете да напишете <README вместо cat README | less
  7. Красив и разширяем – освен по-подредения синтаксис, към zsh можете да иснталирате пакет oh-my-zsh, с който инсталирането и конфигурирането на обвивката става изключително бързо и лесно. Смяната на контролната лента е просто като да смените темата на десктоп средата (не говоря за Gnome3, където това е чиста висша акробатика).

Повечето дистрибуции идват с преинсталиран bash, и ако искате да го смените ще трябва да извършите няколко машинации, които далеч не са нещо особено сложно:
- Инсталирате пакет zsh: В ArchLinux това би било pacman -S zsh
- Смяна на шела по подразбиране за настоящия потребител – в почти всички дистрибуции това става с командата chsh [change shell]:

chsh -s /bin/zsh

- Добавяне на oh-my-zsh: Това може да стане по два начина:
Автоматизирано с curl:

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

Ръчно с извличане на git хранилището:

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

Тук обаче ще се наложи ръчно да създадете .zshrc файла, по образеца в ~/.oh-my-zsh

След като рестартирате терминала би трябвало да бъдете поздравени с промпта на zsh, от там следва една бърза настройка като разрешите някои добавки за вашата дистрибуция или често ползвани приложения. Можете да смените и командния промпт,с друг по-шарен, или по-полезен за вас.

Списък с предлаганите теми към oh-my-zsh можете да намерите на адрес: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
Списък с предлаганите добавки и кратко обяснение за какво са: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins

И един бонус, който мен лично доста ме ядосваше в началото е пействането от clipboard с клавишната комбинация Shift+Ins за целта трябва да добавите следното във вашия .zshrc файл:

# Create a widget from the function paste-from clipboard.
# Note that /dev/clipboard will give you access to the clipboard
# if you are on cygwin.
paste-from-clipboard() {
CLIPOUT=`cat /dev/clipboard`
BUFFER=$LBUFFER$CLIPOUT$RBUFFER
}
 
# Bind a widget with the same name as the function
zle -N paste-from-clipboard paste-from-clipboard
 
# Make insert paste from clipboard by binding it to the widget.
# If you hit ctrl-v and then the key, it shows you the extended code to use.
bindkey "\e[2~" paste-from-clipboard

Общо взето това е – мисля, че останалото бихте могли сами да разучите.

Tmux (Terminal Multiplexer)

Накратко по-добра алтернатива за screen и byobu, позволява ви да стартирате една или повече инстанции на шела в една програма, като ги разделяте по екран или по прозорци – всичкото в една програма. Представете си ползвате компютъра без графична среда. Няма прозорци, които да минимизирате, няма табове – за запознатите – тук влиза в употреба screen. В случаят при мен влиза в употерба tmux. И защо е за предпочитане – защото позволява с прости клавишни комбинации да разделяте екрана, както пожелаете. В screen например разполагате с прозорци и толкова (или пък аз не съм достатъчно запознат). Докато в tmux можете да разделяте допълнително прозореца на дялове. По този начин можете да изпълняване няколко неща директно от един екран (особено за разработка това е страхотно (ляво: терминал, дясно: vm,  долу: gdb). Разбира се бихте могли да си нацепите по този начин и vim, но за някои от функциите ще трябва да се погрижите за подходящи добавки.

Важно да кажем за някои от характеристиките на tmux:
- Поддържа utf-8 и 256 цвята
- Панели и прозорци, като всеки панел може да бъде разделят многократно
- Смяна на прозорци, чрез търсене на по индекс
- Заключване на терминала – ръчно или автоматично след определен период от време и т.н.

Инсталирането на tmux става от пакетния мендиджър на почти всяка дистрибуция.

За да не преписвам клавишните комбинации ще добавя една Ctrl+b+…. – това е командната клавишна комбинация, след което следва командата.
На пример ако искате да разделите екрана на две полета ляво/дясно Ctrl+b+!
Ctrl+b+" – разделя екрана/полето на две горе/долу
Ctrl+b+<стрелки за движение> – можете да се движите между полетата
и т.н. пробвайте с man tmux за да ги разучите

Щеше ми се да допълня и малко повече за настройката на vim посредством bundles, но мисля, че за това ще трябва допълнителна статия.

Надявам се информацията да ви е била полезна.

P.S. BulTux.Org rises from the dead :-)