TMux: Difference between revisions
Jump to navigation
Jump to search
(26 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
==Cheat Sheet== | ==Cheat Sheet== | ||
{| | {| | ||
| valign="top | | valign="top" | | ||
'''tmux ls''' » Session list | '''tmux ls''' » Session list | ||
'''tmux a -t 0…9''' » Session attach to | |||
'''tmux attach -t 0…9''' » Session attach to | '''tmux attach -t 0…9''' » Session attach to | ||
'''Ctrl + a''' | '''Ctrl + a''' → d » Session detach from | ||
'''Ctrl + a''' → r » Session reload config | |||
| valign="bottom" | | |||
'''Ctrl + a''' → Ctrl + s » Session save | |||
'''Ctrl + a''' → Ctrl + r » Session restore | |||
'''Ctrl + z''' » Send job background | |||
'''bg/jobs''' » Background job list | |||
'''bg 0…9''' » Bring to foreground | |||
|- | |- | ||
Line 16: | Line 24: | ||
─────────────────────────────────────────────────────── | ─────────────────────────────────────────────────────── | ||
'''Ctrl + a''' → : » Enter command mode | '''Ctrl + a''' → : » Enter command mode | ||
'''Win + Nav''' » Move to Monitor | |||
'''Win + Tab''' » Focus to Monitor | |||
| valign="top" | | | valign="top" | | ||
'''misc:''' | '''misc:''' | ||
─────────────────────────────────────────────────────── | ─────────────────────────────────────────────────────── | ||
'''Ctrl + a''' → ? » List key bindings | '''Ctrl + a''' → ? » List key bindings | ||
'''~ + .''' » Kill SSH Session | |||
|- | |- | ||
Line 117: | Line 129: | ||
==Installation== | ==Installation== | ||
< | <syntaxhighlight lang="bash"> | ||
sudo apt install tmux | sudo apt install tmux | ||
sudo apt install powerline | sudo apt install powerline | ||
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm | git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm | ||
git clone https://github.com/tmux-plugins/tmux-yank ~/.tmux/plugins/tmux-yank | |||
git clone https://github.com/tmux-plugins/tmux-battery ~/.tmux/plugins/tmux-battery | |||
git clone https://github.com/tmux-plugins/tmux-sensible ~/.tmux/plugins/tmux-sensible | |||
git clone https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/tmux-resurrect | |||
git clone https://github.com/tmux-plugins/tmux-continuum ~/.tmux/plugins/tmux-continuum | |||
git clone https://github.com/tmux-plugins/tmux-prefix-highlight ~/.tmux/plugins/tmux-prefix-highlight | |||
cat << EOF | tee ${HOME}/.tmux.conf >/dev/null | cat << EOF | tee ${HOME}/.tmux.conf >/dev/null | ||
Line 148: | Line 166: | ||
run '~/.tmux/plugins/tpm/tpm' | run '~/.tmux/plugins/tpm/tpm' | ||
EOF | EOF | ||
</ | </syntaxhighlight> | ||
== Powerline == | == Powerline == | ||
< | <syntaxhighlight lang="bash"> | ||
sudo apt install build-essential libssl-dev libffi-dev libgmp3-dev libpq-dev | sudo apt install build-essential libssl-dev libffi-dev libgmp3-dev libpq-dev | ||
sudo apt install python-is-python3 python3-dev python3-pip python3-venv | sudo apt install python-is-python3 python3-dev python3-pip python3-venv | ||
Line 158: | Line 176: | ||
pip install wheel | pip install wheel | ||
pip install powerline-status | pip install powerline-status | ||
</ | </syntaxhighlight> | ||
---- | ---- | ||
< | <syntaxhighlight lang="bash"> | ||
# powerline font installation: | # powerline font installation: | ||
# ──────────────────────────── | # ──────────────────────────── | ||
Line 166: | Line 184: | ||
./fonts/install.sh && rm -rf fonts/ | ./fonts/install.sh && rm -rf fonts/ | ||
ls -lah ${HOME}/.local/share/fonts/ | ls -lah ${HOME}/.local/share/fonts/ | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang="bash"> | ||
# powerline daemon config: | # powerline daemon config: | ||
# ──────────────────────── | # ──────────────────────── | ||
Line 174: | Line 192: | ||
cp -r ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/config_files/* ${HOME}/.config/powerline/ | cp -r ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/config_files/* ${HOME}/.config/powerline/ | ||
powerline-daemon --replace | powerline-daemon --replace | ||
</ | </syntaxhighlight> | ||
---- | ---- | ||
< | <syntaxhighlight lang="bash"> | ||
echo -E "$(jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\ | echo -E "$(jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\ | ||
${HOME}/.config/powerline/config.json)">\ | ${HOME}/.config/powerline/config.json)">\ | ||
Line 184: | Line 202: | ||
${HOME}/.config/powerline/themes/shell/default_leftonly.json)">\ | ${HOME}/.config/powerline/themes/shell/default_leftonly.json)">\ | ||
${HOME}/.config/powerline/themes/shell/default_leftonly.json | ${HOME}/.config/powerline/themes/shell/default_leftonly.json | ||
</ | </syntaxhighlight> | ||
=== Powerline » Vim === | === Powerline » Vim === | ||
---- | ---- | ||
< | <syntaxhighlight lang="bash"> | ||
# ~/.vimrc | # ~/.vimrc | ||
set rtp+=${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/vim/ | set rtp+=${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/vim/ | ||
set laststatus=2 | set laststatus=2 | ||
</ | </syntaxhighlight> | ||
=== Powerline » Bash === | === Powerline » Bash === | ||
---- | ---- | ||
< | <syntaxhighlight lang="bash"> | ||
# powerline configuration | # powerline configuration | ||
if [ -f ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh ]; then | if [ -f ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh ]; then | ||
Line 205: | Line 223: | ||
source ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh | source ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh | ||
fi | fi | ||
</ | </syntaxhighlight> | ||
=== Powerline » TMux === | === Powerline » TMux === | ||
---- | ---- | ||
< | <syntaxhighlight lang="bash"> | ||
# ~/.tmux.conf | # ~/.tmux.conf | ||
set -g default-terminal "screen-256color" | set -g default-terminal "screen-256color" | ||
source "${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/tmux/powerline.conf" | source "${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/tmux/powerline.conf" | ||
</ | </syntaxhighlight> | ||
=== Powerline » Code === | |||
---- | |||
<syntaxhighlight lang="bash"> | |||
# Debian | |||
echo -E "$(jq '."terminal.integrated.fontFamily"="Source Code Pro for Powerline"'\ | |||
${HOME}/.config/Code/User/settings.json)">\ | |||
${HOME}/.config/Code/User/settings.json | |||
# MacOS | |||
echo -E "$(jq '."terminal.integrated.fontFamily"="Source Code Pro for Powerline"'\ | |||
${HOME}/Library/Application Support/Code/User/settings.json)">\ | |||
${HOME}/Library/Application Support/Code/User/settings.json | |||
</syntaxhighlight> | |||
==Knowledge== | ==Knowledge== | ||
Line 259: | Line 291: | ||
|valign="top"| | |valign="top"| | ||
python3 -V|perl -pe '($_)=/([0-9]+)/' | python3 -V|perl -pe '($_)=/([0-9]+)/' | ||
|- | |||
|colspan="3"| | |||
---- | |||
|- | |||
|valign="top" colspan="3"| | |||
alias extractor=$'perl -pe \'if(($v)=/([0-9]+([.][0-9]+)+)/){print"$v\n";exit}$_=""\'' | |||
mvn --version|extractor|perl -pe '($_)=/([0-9]+[.][0-9]+)/' | |||
mvn --version|extractor|perl -pe '($_)=/([0-9]+)/' | |||
mvn --version|extractor | |||
|- | |- | ||
Line 265: | Line 306: | ||
|- | |- | ||
|valign="top" colspan="3"| | |valign="top" colspan="3"| | ||
< | <syntaxhighlight lang='bash'> | ||
GIT_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'git' 2>&1)" | GIT_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'git' 2>&1)" | ||
if [[ ! $? -eq 0 ]]||[[ ! "${GIT_INSTALL_STATUS}" -eq 'installed' ]];then | if [[ ! $? -eq 0 ]]||[[ ! "${GIT_INSTALL_STATUS}" -eq 'installed' ]];then | ||
Line 280: | Line 321: | ||
printf 'sudo apt install --yes \033[0;31mpowerline \033[0m\n';exit 1 | printf 'sudo apt install --yes \033[0;31mpowerline \033[0m\n';exit 1 | ||
fi | fi | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang='bash'> | ||
PYTHON3_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'python3' 2>&1)" | PYTHON3_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'python3' 2>&1)" | ||
if [[ ! $? -eq 0 ]]||[[ ! "${PYTHON3_INSTALL_STATUS}" -eq 'installed' ]];then | if [[ ! $? -eq 0 ]]||[[ ! "${PYTHON3_INSTALL_STATUS}" -eq 'installed' ]];then | ||
Line 297: | Line 338: | ||
printf 'sudo apt install --yes \033[0;31mpython3-venv \033[0m\n';exit 1 | printf 'sudo apt install --yes \033[0;31mpython3-venv \033[0m\n';exit 1 | ||
fi | fi | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 318: | Line 359: | ||
|- | |- | ||
|valign="top" colspan="3"| | |valign="top" colspan="3"| | ||
< | <syntaxhighlight lang="bash"> | ||
python3 -m venv ~/.venv/powerline --prompt="Powerline" | python3 -m venv ~/.venv/powerline --prompt="Powerline" | ||
# source .venv/bin/activate | # source .venv/bin/activate | ||
# (Powerline) $ | # (Powerline) $ | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 329: | Line 370: | ||
|- | |- | ||
|valign="top" colspan="3"| | |valign="top" colspan="3"| | ||
< | <syntaxhighlight lang="PowerShell"> | ||
python -m venv ~/.venv/powerline --prompt="Powerline" | python -m venv ~/.venv/powerline --prompt="Powerline" | ||
# .venv\Scripts\activate | # .venv\Scripts\activate | ||
# (Powerline) PS> | # (Powerline) PS> | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 348: | Line 389: | ||
|- | |- | ||
|valign="top" colspan="3"| | |valign="top" colspan="3"| | ||
< | <syntaxhighlight lang="bash"> | ||
cat ${HOME}/.config/powerline/config.json|jq '.ext.shell.theme' | cat ${HOME}/.config/powerline/config.json|jq '.ext.shell.theme' | ||
cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json|\ | cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json|\ | ||
jq '.segments.left[].function' | jq '.segments.left[].function' | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang="bash"> | ||
jq '.ext.shell|select(.theme=="default")' ${HOME}/.config/powerline/config.json | jq '.ext.shell|select(.theme=="default")' ${HOME}/.config/powerline/config.json | ||
jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")'\ | jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")'\ | ||
${HOME}/.config/powerline/themes/shell/default_leftonly.json | ${HOME}/.config/powerline/themes/shell/default_leftonly.json | ||
</ | </syntaxhighlight> | ||
|- | |- | ||
Line 365: | Line 406: | ||
|- | |- | ||
|valign="top" colspan="3"| | |valign="top" colspan="3"| | ||
< | <syntaxhighlight lang="bash"> | ||
cat ${HOME}/.config/powerline/config.json |\ | cat ${HOME}/.config/powerline/config.json |\ | ||
jq '.ext.shell|select(.theme=="default")|.theme="default_leftonly"' | jq '.ext.shell|select(.theme=="default")|.theme="default_leftonly"' | ||
Line 371: | Line 412: | ||
cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json |\ | cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json |\ | ||
jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")|.args={"status_colors":true}' | jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")|.args={"status_colors":true}' | ||
</ | </syntaxhighlight> | ||
< | <syntaxhighlight lang="bash"> | ||
jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\ | jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\ | ||
${HOME}/.config/powerline/config.json | ${HOME}/.config/powerline/config.json | ||
Line 379: | Line 420: | ||
jq '(.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")).args={"status_colors":true}'\ | jq '(.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")).args={"status_colors":true}'\ | ||
${HOME}/.config/powerline/themes/shell/default_leftonly.json | ${HOME}/.config/powerline/themes/shell/default_leftonly.json | ||
</ | </syntaxhighlight> | ||
|} | |} | ||
Line 410: | Line 451: | ||
| valign="top" | | | valign="top" | | ||
* [https://stackoverflow.com/questions/45017773/ TMux » <code>set -g</code>, <code>set -ga</code>, <code>setw -g</code> vs. <code>set-option -g</code>] | |||
* [https://stackoverflow.com/questions/81272/ Move the cursor word by word in the OS X Terminal] | |||
* [https://linuxhandbook.com/run-process-background/ Running Linux Process in Background & Foreground] | |||
* [https://unix.stackexchange.com/questions/214192/ <code>rpm --querytags</code> & <code>rpm -q --queryformat</code>] | * [https://unix.stackexchange.com/questions/214192/ <code>rpm --querytags</code> & <code>rpm -q --queryformat</code>] | ||
* [https://unix.stackexchange.com/questions/52144/ TMux » Eclipsed colorized output of ls] | * [https://unix.stackexchange.com/questions/52144/ TMux » Eclipsed colorized output of ls] | ||
* [https://towardsdatascience.com/how-to-boost-10x-productivity-with-tmux-ead3d3d452f9 Boost 10X Productivity with Tmux] | |||
* [https://devguide.python.org/versions/ Status of Python Versions] | * [https://devguide.python.org/versions/ Status of Python Versions] | ||
* [https://pkgs.alpinelinux.org/packages?name=powerline-*&branch=edge Alpine Linux Powerline] | * [https://pkgs.alpinelinux.org/packages?name=powerline-*&branch=edge Alpine Linux Powerline] | ||
* [https://wiki.archlinux.org/title/Powerline ArchLinux Powerline] | * [https://wiki.archlinux.org/title/Powerline ArchLinux Powerline] | ||
* [https://stackoverflow.com/questions/2032747/ <code>.vimrc</code> Comments] | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
* [https://github.com/tmux/tmux/wiki TMux » Wiki] | |||
| valign="top" | | |||
| valign="top" | | |||
|- | |- | ||
Line 421: | Line 478: | ||
|- | |- | ||
| valign="top" | | | valign="top" | | ||
* [[AwesomeWM]] | |||
* [[Neovim]] | |||
* [[PyEnv]] | |||
* [[7Zip]] | |||
* [[Zip]] | |||
* [[Tar]] | |||
| valign="top" | | | valign="top" | |
Latest revision as of 07:15, 17 November 2024
tmux
is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time.
Cheat Sheet
tmux ls » Session list tmux a -t 0…9 » Session attach to tmux attach -t 0…9 » Session attach to Ctrl + a → d » Session detach from Ctrl + a → r » Session reload config |
Ctrl + a → Ctrl + s » Session save Ctrl + a → Ctrl + r » Session restore Ctrl + z » Send job background bg/jobs » Background job list bg 0…9 » Bring to foreground |
| |
misc: ─────────────────────────────────────────────────────── Ctrl + a → : » Enter command mode Win + Nav » Move to Monitor Win + Tab » Focus to Monitor |
misc: ─────────────────────────────────────────────────────── Ctrl + a → ? » List key bindings ~ + . » Kill SSH Session |
| |
session: ─────────────────────────────────────────────────────── Ctrl + a → w » Session and Window Preview Ctrl + a → ( » Move to previous session Ctrl + a → ) » Move to next session Ctrl + a → d » Detach from session Ctrl + a → s » Show all sessions Ctrl + a → $ » Rename session Ctrl + a → ʘ » Ctrl + a → ʘ » |
window: ─────────────────────────────────────────────────────── Ctrl + a → n » Next window Ctrl + a → w » List windows Ctrl + a → p » Previous window Ctrl + a → c » Create a new window Ctrl + a → & » Close active window Ctrl + a → , » Rename active window Ctrl + a → 1 » Toggle last active window Ctrl + a → 0…9 » Switch to window by number |
| |
pane: ─────────────────────────────────────────────────────── Ctrl + a → x » Close active pane Ctrl + a → q » Show pane numbers Ctrl + a → q + 0…9 » Switch pane by number Ctrl + a → | » Split pane vertically Ctrl + a → - » Split pane horizontally Ctrl + a → ; » Toggle last active pane Ctrl + a → z » Toggle active pane zoom Ctrl + a → { » Move the active pane left Ctrl + a → } » Move the active pane right Ctrl + a → ! » Convert pane into a window |
pane: ─────────────────────────────────────────────────────── Ctrl + a → Ctrl + ← » Pane width resize Ctrl + a → Ctrl + → » Pane width resize Ctrl + a → Ctrl + ↑ » Pane height resize Ctrl + a → Ctrl + ↓ » Pane height resize Ctrl + a → ↑ » Switch to pane up Ctrl + a → ↓ » Switch to pane down Ctrl + a → o » Switch to next pane Ctrl + a → ← » Switch to pane left Ctrl + a → → » Switch to pane right Ctrl + a → Spacebar » Toggle between pane layouts |
| |
vi copy: ─────────────────────────────────────────────────────── Ctrl + a → [ » Enter copy mode Ctrl + a → PgUp » Copy mode & scroll one page up → g » Go to top line → G » Go to bottom line → h » Move cursor left → j » Move cursor down → k » Move cursor up → l » Move cursor right → w » Move cursor forward one word → b » Move cursor backward one word |
vi copy: ─────────────────────────────────────────────────────── → q » Quit mode → ↑ » Scroll up → ↓ » Scroll down → / » Search forward → ? » Search backward → Spacebar » Start selection → Esc » Clear selection → n » Next keyword occurrence → N » Previous keyword occurrence Ctrl + a → ] » Paste contents of buffer_0 |
Installation
sudo apt install tmux
sudo apt install powerline
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
git clone https://github.com/tmux-plugins/tmux-yank ~/.tmux/plugins/tmux-yank
git clone https://github.com/tmux-plugins/tmux-battery ~/.tmux/plugins/tmux-battery
git clone https://github.com/tmux-plugins/tmux-sensible ~/.tmux/plugins/tmux-sensible
git clone https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/tmux-resurrect
git clone https://github.com/tmux-plugins/tmux-continuum ~/.tmux/plugins/tmux-continuum
git clone https://github.com/tmux-plugins/tmux-prefix-highlight ~/.tmux/plugins/tmux-prefix-highlight
cat << EOF | tee ${HOME}/.tmux.conf >/dev/null
set -g base-index 1
# remap prefix from 'c-b' to 'c-a'
unbind C-b
set-option -g prefix c-a
bind-key c-a send-prefix
set -g default-terminal 'screen-256color'
set -g history-limit 10000
# window/pane split
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# list of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
# initialize tmux plugin manager
run '~/.tmux/plugins/tpm/tpm'
EOF
Powerline
sudo apt install build-essential libssl-dev libffi-dev libgmp3-dev libpq-dev
sudo apt install python-is-python3 python3-dev python3-pip python3-venv
python3 -m venv ~/.venv/powerline --prompt="Powerline"
source ~/.venv/powerline/bin/activate
pip install wheel
pip install powerline-status
# powerline font installation:
# ────────────────────────────
git clone https://github.com/powerline/fonts.git --depth=1
./fonts/install.sh && rm -rf fonts/
ls -lah ${HOME}/.local/share/fonts/
# powerline daemon config:
# ────────────────────────
mkdir -p ${HOME}/.config/powerline
cp -r ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/config_files/* ${HOME}/.config/powerline/
powerline-daemon --replace
echo -E "$(jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\
${HOME}/.config/powerline/config.json)">\
${HOME}/.config/powerline/config.json
echo -E "$(jq '(.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")).args={"status_colors":true}'\
${HOME}/.config/powerline/themes/shell/default_leftonly.json)">\
${HOME}/.config/powerline/themes/shell/default_leftonly.json
Powerline » Vim
# ~/.vimrc
set rtp+=${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/vim/
set laststatus=2
Powerline » Bash
# powerline configuration
if [ -f ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh ]; then
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
source ${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/bash/powerline.sh
fi
Powerline » TMux
# ~/.tmux.conf
set -g default-terminal "screen-256color"
source "${HOME}/.venv/powerline/lib/python3.10/site-packages/powerline/bindings/tmux/powerline.conf"
Powerline » Code
# Debian
echo -E "$(jq '."terminal.integrated.fontFamily"="Source Code Pro for Powerline"'\
${HOME}/.config/Code/User/settings.json)">\
${HOME}/.config/Code/User/settings.json
# MacOS
echo -E "$(jq '."terminal.integrated.fontFamily"="Source Code Pro for Powerline"'\
${HOME}/Library/Application Support/Code/User/settings.json)">\
${HOME}/Library/Application Support/Code/User/settings.json
Knowledge
tmux ls tmux new -s my_session tmux attach-session -t 0 tmux attach-session -t my_session Ctrl + a % » Split pane horizontally Ctrl + a " » Split pane vertically Ctrl + a x » Close current pane |
Ctrl + a c » Create a new window Ctrl + a w » Choose window from a list Ctrl + a 0 » Switch to window by number Ctrl + a , » Rename the current window Ctrl + a o » Go to the next pane Ctrl + a ; » Toggle between pane Ctrl + a d » Detach the session |
tmux ls tmux kill-server tmux list-sessions tmux kill-session -a tmux kill-session -t {index} pkill -f tmux ps aux | grep tmux |
| ||
python3 -V|perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' |
python3 -V|perl -pe '($_)=/([0-9]+[.][0-9]+)/' |
python3 -V|perl -pe '($_)=/([0-9]+)/' |
| ||
alias extractor=$'perl -pe \'if(($v)=/([0-9]+([.][0-9]+)+)/){print"$v\n";exit}$_=""\ mvn --version|extractor|perl -pe '($_)=/([0-9]+[.][0-9]+)/' mvn --version|extractor|perl -pe '($_)=/([0-9]+)/' mvn --version|extractor | ||
| ||
GIT_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'git' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${GIT_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mgit \033[0m\n';exit 1
fi
TMUX_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'tmux' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${TMUX_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mtmux \033[0m\n';exit 1
fi
POWERLINE_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'powerline' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${POWERLINE_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mpowerline \033[0m\n';exit 1
fi
PYTHON3_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'python3' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${PYTHON3_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mpython3 \033[0m\n';exit 1
fi
PYTHON3_PIP_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'python3-pip' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${PYTHON3_PIP_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mpython3-pip \033[0m\n';exit 1
fi
PYTHON3_VENV_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'python3-venv' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${PYTHON3_VENV_INSTALL_STATUS}" -eq 'installed' ]];then
printf 'sudo apt install --yes \033[0;31mpython3-venv \033[0m\n';exit 1
fi
| ||
| ||
python3 -m site --user-site python3 -m site | grep packages python3 -m sysconfig | grep packages |
windows 11 C:\> py -c "import sysconfig; print(sysconfig.get_path('purelib'))" python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))" | |
| ||
python3 -m venv ~/.venv/powerline --prompt="Powerline"
# source .venv/bin/activate
# (Powerline) $
| ||
| ||
python -m venv ~/.venv/powerline --prompt="Powerline"
# .venv\Scripts\activate
# (Powerline) PS>
| ||
| ||
uptime | cut -f 4-5 -d ' ' | cut -f 1 -d ',' | ||
| ||
cat ${HOME}/.config/powerline/config.json|jq '.ext.shell.theme'
cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json|\
jq '.segments.left[].function'
jq '.ext.shell|select(.theme=="default")' ${HOME}/.config/powerline/config.json
jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")'\
${HOME}/.config/powerline/themes/shell/default_leftonly.json
| ||
| ||
cat ${HOME}/.config/powerline/config.json |\
jq '.ext.shell|select(.theme=="default")|.theme="default_leftonly"'
cat ${HOME}/.config/powerline/themes/shell/default_leftonly.json |\
jq '.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")|.args={"status_colors":true}'
jq '(.ext.shell|select(.theme=="default")).theme="default_leftonly"'\
${HOME}/.config/powerline/config.json
jq '(.segments.left[]|select(.function=="powerline.segments.common.vcs.branch")).args={"status_colors":true}'\
${HOME}/.config/powerline/themes/shell/default_leftonly.json
|