4 ms·
Emacs users should be using Emacs as their terminal multiplexer...
by cbsmith 14y ago
Emacs users should be using Emacs as their terminal multiplexer...
- reedlaw 14y agoCould you elaborate? I'd love to try that.
- Derbasti 14y agoJust open several terminal buffers in Emacs.
- emidln 14y agoThis isn't very useful if what you want to run in your terminal buffer needs to constantly update its screen while you're working in a different buffer (e.g. irc, tailing log files, etc)
- cbsmith 14y agoUmm.. why is it not useful? Emacs will allow multiple buffers to update at once, and you can work in a third while watching them... That's kind of the idea.
- BCM43 14y agoM+x ansi-term should do it. I'm not sure how well that scales to many terminals though. M+x term also works. There is also eshell.
- easytiger 14y agoansi-term and term are massively buggy. I've never been able to get it to deal well with vast amounts of output well. Constant overwriting issues etc. Definitely prefer to use tmux + emacs considering the huge amount of stuff i end up throwing at my term.
- merlincorey 14y ago; Open a terminal M-x ansi-term ; Rename the buffer (escaping shell mode first) C-c C-j M-x rename-buffer ; Shell responds to keyboard again C-c C-k ; Split window in half horizontally C-x 2 ----- I stole this (possibly from Steve Yegge or another source) long ago to somewhat automate the process of renaming terminal buffers: (global-set-key (kbd "<f2>") 'visit-ansi-term) ;; Terminal awesomeness (require 'term) (defun visit-ansi-term () "If the current buffer is: 1) a running ansi-term named *ansi-term*, rename it. 2) a stopped ansi-term, kill it and create a new one. 3) a non ansi-term, go to an already running ansi-term or start a new one while killing a defunt one" (interactive) (let ((is-term (string= "term-mode" major-mode)) (is-running (term-check-proc (buffer-name))) (term-cmd "/usr/local/bin/zsh") (anon-term (get-buffer "*ansi-term*"))) (if is-term (if is-running (if (string= "*ansi-term*" (buffer-name)) (call-interactively 'rename-buffer) (if anon-term (switch-to-buffer "*ansi-term*") (ansi-term term-cmd))) (kill-buffer (buffer-name)) (ansi-term term-cmd)) (if anon-term (if (term-check-proc "*ansi-term*") (switch-to-buffer "*ansi-term*") (kill-buffer "*ansi-term*") (ansi-term term-cmd)) (ansi-term term-cmd)))))
- abecedarius 14y agoHey, I found that code hard to follow, with the if-then-elses nested 4 deep. A refactor, pretty much untested since I don't use ansi-term: (defun visit-ansi-term () "If the current buffer is: 1) a running ansi-term named *ansi-term*, rename it. 2) a stopped ansi-term, kill it and create a new one. 3) a non ansi-term, go to an already running ansi-term or start a new one while killing a defunct one." (interactive) (let ((is-term (string= "term-mode" major-mode)) (is-ansi-term (string= "*ansi-term*" (buffer-name))) (is-running (term-check-proc (buffer-name))) (anon-term (get-buffer "*ansi-term*"))) (cond ((and is-term is-running is-ansi-term) (call-interactively 'rename-buffer)) ((and anon-term (if is-term (and is-running (not is-ansi-term)) (term-check-proc "*ansi-term*"))) (switch-to-buffer "*ansi-term*")) (t (cond ((and is-term (not is-running)) (kill-buffer (buffer-name))) ((and anon-term (not (term-check-proc "*ansi-term*"))) (kill-buffer "*ansi-term*"))) (ansi-term "/usr/local/bin/zsh")))))
- cbsmith 14y agoshell mode + emacs --daemon + emacsclient = all the multiplexing a growing engineer might need.
- pivo 14y agoOne reason to run Emacs in tmux is if you work on remote machines over, e.g. ssh. Emacs in tmux (or screen) lets you detach, log out then log back in and re-attach to the remote session with Emacs still running. That's amazingly handy.
- ams6110 14y agoAnother option is tramp[1], which lets you open files remotely (generally via ssh/scp). Not the same thing, but often accomplishes the same goal. [1] http://www.gnu.org/software/tramp/#Top http://www.gnu.org/software/tramp/#Top
- cdjk 14y agoYou still need a remote shell open if you want to run make, use SCM plugins, etc, so I've never found tramp that useful. If there's a clever solution for that I'd love to hear it.
- jrdn 14y agoeshell interfaces pretty well with tramp (well, not over FTP obviously, but ssh) so if you're editing a file over tramp and start eshell, it'll be in the directory of the file on the remote host. you can also use tramp-y paths in eshell: cd /user@host:/home/user/
- cdjk 14y agoI realize I'm a bit late to reply, but thanks for the tip. The biggest problem I had was with p4 mode (we use perforce at work) and rope-mode - I didn't really feel like hacking those to get it to work with tramp. And I can keep everything open across network disconnects with screen or tmux...
- cobbal 14y agoActually, make works in tramp by default if you use 'M-x compile' and friends.
- 14y ago
- cturner 14y agoWell - it's my tool of choice for editing Makefiles. :) But that's all I use it for. My vim setup automatically hammers tabs to spaces, and make doesn't like that. Shell users who use emacs mode (most ppl) may be annoyed by ctrl+a missing.
- throwaway125 14y agoThe following line in your vimrc will make vim not expand tabs for every file named "Makefile". au BufRead,BufNewFile Makefile set noexpandtab
- cturner 14y agoWow - this thread is full of good advice. I have not touched my dot files in about four years, and today they're all getting an upgrade. Thanks!
- X-Istence 14y agoAt least in my vim, Makefiles are automatically set to noexpandtab even-though I have it set to automatically expand tabs for everything else.