Build an IDE with tmux and vim
alexyoung.org
alexyoung.org
You can get full mouse support in tmux/vim.
I recently read the tmux book by the pragmatic programmers and highly recommend it: http://pragprog.com/book/bhtmux/tmux
It's short, well written and contains lots of essential configuration tips to get not only mouse support but also system copy/paste on a mac. Here's my tmux.conf if you're curious: https://github.com/briandoll/dotfiles/blob/master/tmux.conf
The video is what sold me. I hadn't realized what I was missing until I watched that brief video you put out. It was, if anything, enlightening. I knew this stuff could be done, but it suddenly seemed so much easier, and well worth the investment.
What I'm trying to say is, if you have other ideas for writing a book about various other tools, get to work.
As soon as I put Linux on this machine I'll give it a try, too :)
This way, I can also get a browser window in the mix too, or any other windowed application. I also prefer using gvim and not console vim, because I can have a different coding font and drag and drop files from my version control GUI (an enterprise VCS with a really crappy CLI, guess which one).
Switching to a tiling window manager is perhaps the best productivity booster I've had. It even allowed me to start working comfortably with one display only or a laptop display, I've always used multiple displays before.
One tip that Works For Me (tm) is to map the rarely-used function keys to pane and window selection commands (I hate multi-key commands :))
I've got F1/F2 mapped to cycle through panes, and F3/F4 to cycle through windows, F5/F6 to split windows, F7/F8 to resize panes, and F9 to open a new window.
Also, I always run my tmux terminal fullscreen and without the menubar.
YMMV.
P.S. dont you have problems using tools like "top" and so on?
# use ^K instead of default ^B.
set-option -g prefix C-k
unbind-key C-b
bind-key C-k send-prefix
# F1, F2 to cycle between windows within a "workspace".
# what tmux calls "windows" are like workspaces in WindowMaker.
# and what it calls "panes" are like individual xterm windows in a workspace.
bind-key -n F2 select-pane -t:.+
bind-key -n F1 select-pane -t:.-
# F3, F4 to cycle between workspaces.
bind-key -n F3 previous-window
bind-key -n F4 next-window
# F5 split a workspace horizontally and F6 to split vertically.
bind-key -n F5 split-window
bind-key -n F6 split-window -h
# F9 new workspace
bind-key -n F9 new-window
# to disconnect from tmux do: ^K+d
# or exit all the windows you created.
bind-key -n F7 resize-pane -L
bind-key -n F8 resize-pane -RThere's a setting under keyboard (or terminal, I forget). You might need to change it to 'X11R6'.
Look at section 4.4.3 here: http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter4.ht...
I hope that fixes it for you. Good luck.
Anyone else had similar problems and managed to resolve? Here is my dotfiles if you're curious https://github.com/jeyb/dotfiles.
So you can have a headless box or dedicated server running tmux. In the session is your development work, irssi irc clients, documents you frequently edit. They can run for months or years. You could be on your laptop or system at work or desktop at home, and you ssh in with xterm/iterm/putty and type 'tmux attach' and you're home again. I made a datacentre trip a few weeks ago and was working on some stuff from a crash-cart monitor to a unix tty. My session came up, I was back home.
If you have iterm, then you're tied to Mac OS X. The developer or Apple can change something (they're prone to doing this) and then you get left in the cold.
Tmux is a different way of looking at the world, that makes the workstation you're running on mostly irrelevant. With the tmux approach your workstation needs become trivial. Do I have ssh? Perhaps - do I have a web browser? OK - go.
The unix toolchain offers an opportunity to learn a complementing set of weird but really powerful tools once, an then iterate. As time goes on you get better and stronger with them, and can ride them forward for your career/life.
The main use case for that in tmux is when you ssh into a server, start tmux and vim, do some work, then log out without shutting down the tmux daemon. You can then log back in the next day, reattach to the tmux daemon, and continue with your tmux layout the way it was when you logged out the previous day.
ex. i use yakuake (KDE) with three sessions. one with an emacs buffer and the CLI, one session dedicated to wanderlust, and one running erc. if i do some dev work i just add another session and fire up emacsclient to connect to the running emacs instance. this can be adopted for use in a server environment, you just ssh in and hit 'emacsclient' to connect to emacs instance. screenshots: https://plus.google.com/photos/111355179120790769944/albums/...
Posts about using vim and tmux are pretty obviously not pointed at emacs users.
i'm not trying to start a flame war here, i used to use vim until i got into lisp. i'm always interested in looking into different workflows.
The differences:
* The editor is Vim not Emacs.
* Vim is not able (without unconvincing plugins/hacks) to run a shell in a window so if you need one you are pretty much forced to run it somewhere else. Be it another terminal emulator instance, another terminal emulator window, another terminal emulator split window (like you do), in the same terminal emulator window (juggling with Ctrl+z/fg), another window in tmux/screen, another pane in tmux/screen, etc.
* Yaquake is a GUI app that you can't realistically run on a remote server while tmux is CLI-based. When SSHing, tmux is possibly the closest thing there is to Yaquake.
* Tmux and screen both allow you to attach/detach sessions which makes these tools very useful on remote machines where they are commonly used to launch servers or long running tasks.
* Probably many more…
Note that these are DIFFERENCES. They CAN be benefits, depending on your workflow and needs.
Totally OT. I know about Yaquake since years. I know about Quake since much longer. I know that Yaquake "top-sliding" UX is based on Quake's console since all those years. Yet I've just realized, now, that the "quake" in Yaquake is actually "Quake" and that, for all those years I've pronounced it in a kind of japanese-style "Yakuake". Oh well…
tmux has the benefit of a keybaord-driven interface to jump between terminals, so it's not unlike having Emacs running with various vertical and horizontal splits running console buffers (which is something Vim doesn't support well natively.)
It gives Vim users the kind of workflow that some other tools provide natively with a completely keyboard-driven interface.
My tmux tabs are all named for their purpose. So, if I'm working on different areas in a project, I can easily move to that area and focus on that.
tmux also supports having different sessions. So, I can open one session, and if I have to move to a completely different project, I can open up a session for that.
As for file access, their are numerous plugins for vim that accomplish that. I think they are NerdTree and something else I can't remember? Not sure, I don't use them. With tmux, I can have a pane opened up and just use the command line to see everything.
But as for seeing what you have open, tmux and vim give you numerous ways to do this, as well as move through all those screens, easily in many different ways, far easier than any IDE I've ever seen.
Command-T probably.
Perhaps some screenshots would be enlightening for jakejake?
Whereas GNU Screen has been declared an unmaintainable pile of spaghetti code and left to bitrot.
The King is dead! Long live the King!
I'm not sold sold on tmux over screen, but I do like what I'm seeing.