亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

tmux Tutorial - Split Terminal Windows Easil

系統 2028 0

tmux Tutorial - Split Terminal Windows Easily - Blog

??? tmux Tutorial - Split Terminal Windows Easily
??? April 30, 2012 / category: Unix / 11 comments
??? Terminal and Terminator

??? It was long time ago when I realized that the major part of my work is being done in the Linux terminal. This is why I pay attention to things like shell and GNU tools, because knowing them well is often more than a half of job done.

??? Afterwards, I found out that having just one terminal window is not enough. Even though having many windows (represented by tabs in Linux terminal-handling tools or by many Putty instances) can solve this problem, it is often desired to keep things in sight at the same time. For example, we may want to execute some code or tests and at the same time watch over log files by using tail.

??? Terminator seemed to me the right tool to do the job. It's easy to install and it does exactly what it's supposed to do - it can split terminal windows both horizontally and vertically, according to user's requirements. It also allows to keep multiple tabs opened in case splitting one window is not enough. Its important disadvantage is that Terminator is a GUI tool, so it won't work if an X server is not at hand.

??? Terminator in action:

??? Terminator

??? Of course, there is also the screen tool, but it has always been somehow mysterious to me. I was using it to run tasks in the background and to avoid problems caused by losing connection with remote machine. But I've never been brave enough to give screen the charge over my terminal windows and panes. I was pleased with Terminator, but then I found tmux.

??? Tmux lies somewhere between Terminator and screen, combining ease of use with basing on the plain terminal only. Here are the advantages of tmux over Terminator:

??????? Portability - tmux works on all systems able to handle plain, old terminal.
??????? Scriptability - tmux can be scripted, so that setting up windows and panes takes nothing more than one or two keystrokes.
??????? Server-client architecture - tmux can be used to share sessions between users.
??????? Tweaks and options - both tmux and Terminator are easy to get with, but it's tmux that allows to go further and offers wide range of configuration hacks.

??? Beginning With tmux

??? This is what a tmux session looks like:

??? tmux

??? By reading this section, you'll get to know how to use tmux to split terminal window into panes and how to use multiple windows. This will let you do 90% of your work.

??? The first thing you should know is that Ctrl+b is the default prefix in tmux. It means that running any command requires typing in the prefix first. As you probably have guessed, this is to avoid conflicts with key combinations used in other programs run in the terminal.

??? Here is a list of a few basic tmux commands:

??????? Ctrl+b " - split pane horizontally.
??????? Ctrl+b % - split pane vertically.
??????? Ctrl+b arrow key - switch pane.
??????? Hold Ctrl+b, don't release it and hold one of the arrow keys - resize pane.
??????? Ctrl+b c - (c)reate a new window.
??????? Ctrl+b n - move to the (n)ext window.
??????? Ctrl+b p - move to the (p)revious window.

??? Other thing worth knowing is that scrolling is enabled by pressing Ctrl+b PgUp/PgDown. In fact, it enables the copy mode, which can also be done by pressing Ctrl+b [. When in copy mode, you can use PgUp/PgDown and arrow keys to scroll through the terminal contents. To (q)uit the copy mode, simply press the q key.

??? That should do the trick. At least, most of it.
??? Adjusting tmux

??? Your tmux configuration file should be named .tmux.conf and stored in your home directory. This is a regular text file and it's the key to adjusting tmux.

??? Just remember that after every modification, tmux must be refreshed to take new settings into account. This can be achieved either by restarting it or by typing in:
??? 1
??? ???
??? tmux source-file .tmux.conf

??? Let's start modifying .tmux.conf with a simple example.
??? Changing the Prefix

??? As we said before, tmux uses the prefix to distinguish between commands sent to tmux itself and programs running inside of it. As the default prefix (Ctrl+b) is pretty awkward, we'll replace it with Ctrl+a, which is both easier to use (a is located closer to Ctrl than b) and time-honored, as the screen tool has been using it since a long time. To change the prefix, we need to open the .tmux.conf file and type in:
??? 1
??? 2
??? ???
??? unbind C-b
??? set -g prefix C-a

??? These directives are pretty self-explanatory, I hope. First we release the default prefix and then we settle a new one. Nothing to add here.
??? Pane switching with Alt+arrow

??? For pane switching, Alt+arrow key combination (which is default in Terminator) worked fine for me and didn't cause any conflicts so far, so I think it will work fine in tmux, too. But it is of course a matter of taste and you can use whatever key you want. To switch panes with Alt, you can use these directives:
??? 1
??? 2
??? 3
??? 4
??? ???
??? bind -n M-Left select-pane -L
??? bind -n M-Right select-pane -R
??? bind -n M-Up select-pane -U
??? bind -n M-Down select-pane -D

??? Make sure that you don't run tmux in the Terminator, as the latter will catch Alt+arrow combination and pane switching inside tmux won't work.
??? Activity Monitoring

??? If you have many tmux windows opened, you might want to get notified when something happens inside other windows. Pasting this:
??? 1
??? 2
??? ???
??? setw -g monitor-activity on
??? set -g visual-activity on

??? into the .tmux.conf file will cause tmux to write a message and highlight the window inside of which the activity took place (that is, something was written to the output).
??? Highlighting Current Window Using Specified Colour

??? Pasting the following:
??? 1
??? ???
??? set-window-option -g window-status-current-bg yellow

??? into the configuration file enables highlighting the current window using the yellow colour. You may also specify one of: "black", "red", "green", "blue", "magenta", "cyan" and "white" or write "colour\d+", e.g. "colour5" or "colour170", which picks a color from the terminal's palette.
??? Pane Switching Using Mouse

??? In order to make migration from Terminator a little bit easier, you can modify tmux configuration file to allow pane switching using your mouse:
??? 1
??? ???
??? set-option -g mouse-select-pane on

??? Of course, this may be considered as an undesirable behaviour, as the tmux allows to boost productivity by not requiring to touch the mouse at all.
??? .bashrc Problem

??? I don't know how about you, but I like to keep a few tweaks in my rc file (.bashrc in case of bash shell). However, with tmux the .bashrc file isn't read at all. After examining things a bit, I found out that tmux tries to read .bash_profile instead of .bashrc. I won't mention rules standing behind it here as they are quite complicated, I will show you a simple workaround instead. Adding this line:
??? 1
??? ???
??? source ~/.bashrc

??? to .bash_profile solves the issue.
??? Advanced Capabilities of tmux
??? Scripting tmux

??? My favourite pane layout often looks the same every time I use tmux, of course it depends on the type of work being done. For example, working on a project may require a pane with source code, second for running tests and third one for tailing logs. Setting these panes up is a perfect example of a dull task. Then it's not a surprise that in tmux it can be automated:
??? 1
??? 2
??? 3
??? 4
??? 5
??? 6
??? ???
??? selectp -t 0 # select the first (0) pane
??? splitw -h -p 50 # split it into two halves
????
??? selectp -t 1 # select the new, second (1) pane
??? splitw -v -p 50 # split it into two halves
??? selectp -t 0 # go back to the first pane

??? These commands should be saved in a separate file, e.g. .tmux/dev. In order to be able to run it, you should point to it from the .tmux.conf file:
??? 1
??? ???
??? bind D source-file ~/.tmux/dev

??? From now on, pressing the prefix (Ctrl+b) followed by D (it's an uppercase character in this example, so Shift is required) will execute commands located in the .tmux/dev file.

??? It's also worth knowing that such file can do a little more than just opening the panes. It can also run commands inside them, for example:
??? 1
??? ???
??? splitw -h -p 50 'vim' # split current pane and run 'vim' command inside the new one

??? Building your own scripting files won't take too much time and will pay off soon.
??? Sharing Session

??? All we've talked about so far is limited to a one-user session. As screen allows to share session, tmux is no worse. And setting things up is not too complicated.

??? In order to share session on the same machine, you have to explicitly give tmux the path to the Unix socket which will be used through the session lifetime:
??? 1
??? ???
??? tmux -S /tmp/our_socket

??? Then you have to give other users access to the newly created file:
??? 1
??? ???
??? chmod 777 /tmp/our_socket

??? As expected, when a new user wants to join the session, he has to pass the socket path, so that tmux knows which session is about to be used:
??? 1
??? ???
??? tmux -S /tmp/our_socket attach

??? Note that setting privileges to 777 is one of the dumbest things you can do, unless you fully trust your co-workers. You can also consider more sophisticated access control, SSH forwarding or give wemux a try. wemux is a set of scripts that makes sharing session easier and cleaner.

??? This way or another, sharing session with tmux is quite easy, though not always fully secure. It takes some time to do it right.
??? Summary

??? tmux is not a breakthrough, in fact I suppose it was never meant to be one. However, it's a breath of fresh air that made using multiple terminals a little bit easier to me. Since I feel I'm more productive with tmux, I think I'll stick to it.
??? Tweet
??? Comments
??? There are 11 comments / Submit your comment

??? Felix
??? May 02, 2012 03:55 PM

??? I strongly advise you to take a look at the awesome windowmanager (http://awesome.naquadah.org/). Of course, it is yet another tool for a yet different task, but it goes along the features and philosphy you seem to like.

??? Lukasz Wrobel
??? May 02, 2012 07:00 PM

??? Thanks Felix, awesome window manager seems to represent a higher level concept. It doesn't try to organize space inside windows of one type only, but it organizes windows of all types instead.

??? Some programs (incl. e-mail clients, at least for me) are hardly replaceable with console tools, which makes awesome window manager even more hopeful. I wonder if combining awesome with software like tmux would prove its worth.

??? Ben
??? May 06, 2012 02:54 PM

??? I second felix on Awesome WM. It works great for maximizing screen space and keeping multiple windows open and quickly accessible. There was recently a member of the mailing list that recommended tmux for a terminal with Awesome and it sounded like a great combo.

??? Shfx
??? May 13, 2012 09:21 AM

??? Take a look at tmuxinator. It's quite nice when you want to work with projects that use different split panels.

??? Also, working with shared session with wemux :)

??? globetrotterdk
??? September 27, 2012 05:03 PM

??? Hi Lukasz, great posting. I used your scripting example on my laptop and it worked just fine. However, when I initiate the scriptt on my desktop machine, I get the following error:

??? (0) /dev/pts/2: 6 [190x30 xterm] (utf8)

??? Any idea what that is about?

??? I am using Lubuntu 12.04 on my laptop, and Ubuntu 12.04 on my home built desktop computer. In both instances, I am using Guake as my default terminal app.

??? Lukasz Wrobel
??? September 27, 2012 07:13 PM

??? @globetrotterdk: I'm currently using Ubuntu 11.10 and tmux scripts run without any hassle. I even tried to run them from within Guake and didn't notice any difference.

??? To hunt the bug, I would try to eliminate all the noise. Begin with switching to text terminal by pressing Ctrl+Alt+F1, then enable tmux. If the script fails, try to eliminate its content line by line to find which line causes the trouble.

??? However, if the script works under the text terminal, switch back to the graphical environment. If the script works under the default terminal-handling program, try using Guake etc.

??? I don't know any possible cause of an error message like the one you've provided me with, you must at least try to narrow the search.

??? Walter Yu
??? October 16, 2012 04:22 PM

??? Great write-up! The .term.conf file example was helpful, I now have it running in my home directory with multiple panes. w00t!

??? northcamel
??? November 01, 2012 01:53 PM

??? Thank you for sharing tmux~

??? ray
??? November 22, 2012 04:29 PM

??? Thanks for the tutorial. I'm looking for some way of having multiple terminals that can share the same environment variables in real time. Can tmux do that? Till now, I just start multiple xterms but if I set a variable in one, it's invisible in the others. Perhaps tmux can solve that?

??? Thanks.

tmux Tutorial - Split Terminal Windows Easily


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青青青青在线成人视99 | 国产高清国产专区国产精品 | 国产精品久久毛片蜜月 | 免费四虎永久在线精品 | 精品视频一区二区三区免费 | 久久精品国产福利国产秒 | 在线韩日 | 国产99视频精品一区 | 夜色成人免费观看 | 久久久久九九精品影院 | 亚州综合网| 国产一区二区成人 | 免费国产精成人品 | 爱爱的免费视频 | 成人精品视频一区二区在线 | 欧美日本俄罗斯一级毛片 | 国产91在线chines看 | 免费一级特黄 | 伊人久久国产 | 91久国产在线观看 | 国产成 人 综合 亚洲绿色 | 狠狠色噜噜狠狠狠狠网站视频 | 亚洲欧美色综合大色 | 波多野结衣高清在线播放 | 日韩欧美一区二区在线 | 亚洲综合第一欧美日韩中文 | 色综合视频在线观看 | 久久精品是免费100 久久精品首页 | 亚洲三级在线免费观看 | 日韩欧美理论 | 久久在线观看免费视频 | 国产精品日韩欧美一区二区三区 | 精品国产麻豆 | 久草视频在线看 | 午夜毛毛片 | 亚洲综合网在线观看 | 久久亚洲精品成人 | 九九视频网 | 黄色在线免费看 | 日本免费一区二区三区中文 | 久久午夜夜伦伦鲁鲁片 |