Difference between revisions of "Linux multi window terminal Screen and Tmux"
Line 209: | Line 209: | ||
* Install [https://github.com/git-for-windows/build-extra/releases Git for Windows SDK] | * Install [https://github.com/git-for-windows/build-extra/releases Git for Windows SDK] | ||
* <source inline>run /bin/pacman -S tmux</source> | * <source inline>run /bin/pacman -S tmux</source> | ||
;Quick Start | ;Quick Start |
Revision as of 16:00, 10 August 2019
Screen allows for multi window connection using a single ssh session. It also allows to detach from the session screen while still running a remote session.
Screen
sudo apt-get install screen
Key terms
The server holds sessions and the windows and panes within them:
- session - there may be multiple sessions on a server
- window - each session may have many separate windows that you can switch between
- region(pane) -your terminal screen can be divided in regions where each can hold multiple windows
Useful commands and key bindings
$ screen -ls #list detached sessions
$ screen -r #re attach
- Quick start
C^a c
create new promptC^a tab
move to a next windowC^a |
split verticallyC^a S
split horizontlyC^a \
kill all windows, terminate any ssh sessions and exit GNU Screen program
- Key bindings
Key | Action | Notes |
---|---|---|
Ctrl+a c
|
new window | |
Ctrl+a n
|
next window | I bind F12 to this |
Ctrl+a p
|
previous window | I bind F11 to this |
Ctrl+a "
|
select window from list | I have window list in the status line |
Ctrl+a
|
previous window viewed | |
Ctrl+a S
|
split terminal horizontally into regions | Ctrl+a c to create new window there
|
Ctrl+a |
|
split terminal vertically into regions | Requires screen >= 4.1 |
Ctrl+a :resize
|
resize region | |
Ctrl+a :fit
|
fit screen size to new terminal size | Ctrl+a F is the same. Do after resizing xterm
|
Ctrl+a :remove
|
remove region | Ctrl+a X is the same
|
Ctrl+a tab
|
Move to next region | |
Ctrl+a d
|
detach screen from terminal | Start screen with -r option to reattach |
Ctrl+a A
|
set window title | |
Ctrl+a x
|
lock session | Enter user password to unlock |
Ctrl+a [
|
enter scrollback/copy mode | Enter to start and end copy region. Ctrl+a ] to leave this mode
|
Ctrl+a ]
|
paste buffer | Supports pasting between windows |
Ctrl+a >
|
write paste buffer to file | useful for copying between screens |
Ctrl+a <
|
read paste buffer from file | useful for pasting between screens |
Ctrl+a ?
|
show key bindings/command names | Note unbound commands only in man page |
Ctrl+a :
|
goto screen command prompt | up shows last command entered |
Scroll back - a copy mode
In GNU Screen press Ctrl + a + [
or C^a C^ESC
to enter Copy Mode, then scroll PgUp/PgDown or up/down using keys j or k. Use Enter key to start and end selection coping to registry/buffer. Below are some other navigation keys:
h - Move the cursor left by one character j - Move the cursor down by one line k - Move the cursor up by one line l - Move the cursor right by one character 0 - Move to the beginning of the current line $ - Move to the end of the current line. G - Moves to the specified line (defaults to the end of the buffer). C-u - Scrolls a half page up. C-b - Scrolls a full page up. C-d - Scrolls a half page down. C-f - Scrolls the full page down. PgUp / PgDown - Scrolls a page up/down
Define scrollback buffer size start screen with the following key (5000 lines in this example):
screen -h 5000
Update: You can use activate copy mode of GNU Screen also by Ctrl + Esc that might be more useful than Ctrl + a + [ shortcut (thanks to Yu-Jie Lin for this tip).
Custom configuration
By default the config is kept in ~/.screenrc
file but using -c option we can pass a custom config
~$ screen -c screen-4regions.screen
Example of a config file:
~$ cat screen-4regions.screen
layout FourScreens #it's a new feature, makes screen aware of regions layout
# Region 0
screen -t mail1-queue #creates new terminal/prompt
select 0 #select window0
stuff "echo Window0^M" #echo a string between quotes, ^M translates to EOL means enter-return key
stuff "sshpass -p 'password' ssh -o PubkeyAuthentication=no root@example.com^M" #ssh interactively
split #split horizontally
split -v #split vertically
# Region 1
select 1
focus #get focus on a selected region
screen -t mail2-queue sshpass -p 'password' ssh -o PubkeyAuthentication=no root@example.com
#create a new terminal/prompt '''-t mail2-queue''' in the focus window and
#executes the command
stuff "echo Window1^M"
# Region 2
select 2
focus
screen -t mail1
stuff "echo Window2^M"
split -v
# Region 3
select 3
focus
screen -t mail2
stuff "echo Window3^M"
altscreen on
term screen-256color
bind ',' prev
bind '.' next
#
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
#layout save default #makes regions saved when you re-attach a session
Tmux
- Install - linux - use package manager
sudo apt-get install tmux
- Install - Windows
- Install Git for Windows SDK
run /bin/pacman -S tmux
- Quick Start
/usr/bin/tmux
Key bindings
C^b c
create a window aka new virtual desktop, it creates a full size window on top of your panesC^b "
split a pane horizontlyC^b %
split a pane verticallyC^b z
full screen pane resize, repeat to get backC^d
close a pane, also type 'exit'C^b Up,Down,Left,Right arrow
move to neighbouring paneC^b 0-9
move to the window based on indexC^b {}
swap panes { to left or to } right swapC^b ,
rename the current windowC^b d
detach the current sessionC^b D
gives you a choice what session you wish to detach
- Screen navigation, scroll and search
Function vi emacs -------- -- ----- Half page down C-d M-Down Half page up C-u M-Up Next page C-f Page down Previous page C-b Page up Scroll down C-Down or C-e C-Down Scroll up C-Up or C-y C-Up Search again n n Search again in reverse N N Search backward ? C-r Search forward / C-s
Copy mode default Emacs style
C^b,[ # enter copy mode # navigate to beginning of text, you want to select C^Space # to activate highlighting # move around using arrow keys to select region Alt+w # copy the region C^b,] # paste the selection
Managging sessions
tmux new -s database #start new session named 'database'
tmux ls #lists all detached sessions
tmux attach -t 0 #attach to terminal 0 session
tmux rename-session -t 0 database
tmux switch -t <session_name>
tmux kill-session -t <session_name>
- Key bindings
C-b :new<CR>
new sessionC-b $
name sessionC-b (
previous sessionC-b )
next sessionC-b L
'last' (previously used) sessionC-b s
choose a session from a list
Terminator
Terminator is user frendly, gui scalable terminal with layouts, multi windows, tabs and broadcast function
$ sudo apt install terminator
Useful key bindings
Alt+Arrow Move to another terminal C^+Shift+X Maximise current window, press again to revert C^+Shift+Z Zooms the current terminal, press again to revert C^+Shift+O Split terminals Horizontally. C^+Shift+E Split terminals Vertically. C^+Shift+Arrow Resize windows by moving parent dragbar C^+Shift+T Open new tab C^+Shift+PgUp Switch between tabs, PgDown in reverse order C^+Shift+W Close the current terminal. C^+Shift+Q Quit terminator C^+Plus (+) Increase font size. Note: this may require you to press shift, depending on your keyboard C^+Minus(-) Decrease font size. Note: this may require you to press shift C^+Zero Restore font size to original setting. Super+G Group all Super+Shift+G Ungroup all
Windows ComEmu
References
- User Guide HTML one page
- Tmux Official website
- tmux cheat sheet TOP CLASS!
- Terminator Key bindings man page