To put this in perspective, my computer has two CPUs with 4 cores each, 24GB RAM, a graphics card with 1600 Stream Processing Units (engine running at 850MHz) and 1GB of RAM, and yet it scrolls text in a terminal slower than my 386 machine 20 years ago.
It's great to hear that this work is happening, thank you! And also thank you for all the work, because gripes aside, iTerm2 is the best tool out there.
I never understood why so many people used it, but reading this, it makes a lot of sense now.
On the other hand, such lag is ever-present with SSH—and now it will subjectively increase as I get used to Terminal again.
The reason why it's so slow is very simple. It's basically an nstextview derivate.
To be fast it needs to fill the buffer and render it offscreen in fixed intervals. a lot of osx programs share this problem. there was an ancient vnc viewer called vncthing that easily beats every osx vnc viewers performance, because of that.
F12 should switch you to paste mode and paste it as a block, though on my new Mac this was already mapped to some GUI function so I had to disable that for it to work.
Some relevant info: http://stackoverflow.com/questions/5585129/pasting-code-into...
urxvt's nice and responsive even while catting a million line file into one of the splits - I can use other terms and resize splits without a problem, hitting ^C stops cat instantly, and it's done displaying the lot inside 12 seconds.
Terminator takes 5 seconds just to respond to a ^C, and is otherwise completely unusable for over a minute.
There is something seriously wrong with your setup. I use Terminator and byobu (with tmux) all day and never experienced what you describe.
Perhaps it's depending on some hardware acceleration feature not provided by VirtualBox.
Aside: Check For Update... still gives 18.104.22.16840629 as the latest version. Have to download a 2.0 build explicitly.
I see from the changelog that some type of restoration has been included: "Support for OS 10.7 features including fullscreen, retina graphics, and window restoration"... but upon actually trying it out, it doesn't do what Terminal.app does.
It's open source. Why don't you add it yourself?
I wanted a borderless terminal and as I couldn't find one I hacked the functionality into iTerm: http://i.imgur.com/jOc04sf.jpg
/edit: Wow, being downvoted for suggesting to hack something yourself on Hacker News ... that's a new one. I guess I'll take a time out.
Yes it's open source, and yes, anyone can hack on it themselves. But 99.99999% of the time it's not realistic.
Nearly every piece of software on my computer could be enhanced to fit me personally, but there's no way I could justify the time and energy to work on it. Also, in most cases I have no desire to learn the stack/underpinnings for a particular enhancement.
Lastly, the comment comes off as condescending. Are we really not allowed to wish for things? Must we personally fix everything we find an inconvenience or problem with?
In my experience over the last 15 years, that theme song can often veer from "you can do it yourself" (empowerment) to "do it yourself" (dismissal); replying to a reasonable feature request, in any context, with 'fix it yourself' is one of the things that turned a lot of people off OSS around the time of the first 'year of linux on the desktop'.
The GIMP was the best example of this, with professional graphics editors, illustrators, etc. requesting features and being told 'no one needs those features' and 'if you want it so much, do it yourself', and it hurt their image a lot with many potential users, both technical and non-technical.
Personally, I'm glad that attitude has largely disappeared (though apparently, not entirely).
You'll also get downvoted for complaining about being downvoted. That's almost verboten here, and explicitly mentioned in the guidelines.
When you get downvoted, accept that possible your comment detracts from the conversation. It doesn't just not add anything, but takes away. It's noise.
If your first reaction is to edit your comment and complain, then that's a clear sign you aren't in the right frame of mind to contribute meaningfully.
Your original comment was, if I may be so bold, cliche. Maybe that's the wrong word, but it comes up by someone with your attitude generally every time a thread about an open source project comes along. It literally is something that can go without saying.
In your mind a developer can realistically contribute to any possible open source project, whatever the language and the domain?
He may have to learn an humongous quantity of things to implement a feature and then never use that knowledge anymore.
Founding the project while asking for a feature could be a better advice.
The exact same sentiment could have easily been posted in a friendly and welcoming manner, but that didn't happen and that's why he's getting downvoted.
How do you find it? Do you find the kindergarten icon colours irritating? What about the blurriness? Do you feel like you've switch to varifocal lenses and are constantly rubbing your eyes?
What about the lack of Maximise/Zoom button? I don't want everything fullscreen - the menubar has MenuMeters running in it and a clock which you can't see in Fullscreen mode. I use ShiftIt to maximise the window when Zoom is being dumb and fear for my future with this insane "maximise" button removal.
This attitude seriously needs to die.
'The open-source community' isn't pitching this idea and also rejecting it. 'Tone-deaf open-source proponents' are pitching it (or, in this case, suggesting it, and rudely) and regular, well-socialized people are criticizing it as a good idea poorly said.
Would that mitigate your performance concerns, or did I not guess the source of the issue correctly?
Edit: I wrote a thing here about the difficulty of carrying history across terminal sessions and how can you associate a tab you open now with a tab you had open in a previous session, but then I realised that I misread your post.
I would expect the answer in the posted link to work. The 'share_history' option, when set, tells zsh to reread the history file before performing history lookups.
Maybe try the set-local-history option documented here?
Since 10.7, system (assuming the app cooperates, that is) does that for you and reopens everything.
2. If you care about security in any way, you should be using FileVault rather than cargo-culting it into apps (there's no way for that "encrypted file" to be secure unless you have to type in a password every time you shut down the system). If you do that, anyone who can read that file has already compromised your account and there's no additional exposure from this.
Security is not just about passwords. Its about operational knowledge of procedures and habits at the console, too. Knowing that a certain command is always used, or some such operational administration occurs, definitely assists attack.
FileVault is not always available, nor is it always allowable.
But history files are not only about password, as I said.
THANKS for letting us know about cmd-opt-q! I'll have to start using that all the time since it does seem like a potential security hole.
So you don't have to use the shortcut at all in that case.
Personally I prefer getting used to using it on a case-by-case basis. For example, when I leave work I tend to quit most apps on my laptop with Cmd+Option+Q, so that when I get home they don't re-open with work and I can start working on personal projects.
I'll just have to get used to cmd-opt-q.
defaults write com.apple.Terminal NSQuitAlwaysKeepsWindows -bool false
Terminal.app almost certainly does not do what you're describing by default.
Yes, it does. http://i.imgur.com/kYmlBk8.png
This is where Terminal.app (or possibly OS X 10.9 + Terminal.app) ability to show you your terminal history on recovery from Kernel Panic is really appreciated.
If only there was a reliable USB-Serial cable/controller/interface for the Mac. Unfortunately, RS-232 is so rare (except for consoling into Cisco Routers?) that there is no incentive for any vendor to actually write a half stable driver.
That fixed the KP for me and got break to work which didn't out of the box.
Before the updated drivers I worked around the KP by closing cu/screen before unplugging the cable.
I carry a Dell Laptop when going to customer sites+Putty for consoling into Cisco Routers because I've never found a Serial Cable/USB combination that doesn't cause the Macbook air to Kernel Panic.
I'll give the PL-2303 based device a chance - I see there is a nice comparison site here:
I'll definitely try the Trendnet TU-S9. Here's hoping 4 years of weekly hell on my mac laptop comes to an end...
But, maybe I'll try upgrading to Mavericks - this seems to suggest that some progress has been made in the FTDI driver department: https://developer.apple.com/library/mac/technotes/tn2315/_in...
What changed you from "terminal.app is good enough" to "I prefer iTerm"?
Because that's what I'm asking myself.
I stuck with iTerm because of the many, many little features and conveniences that make working with the terminal easier.
Tabs can be put at the bottom of the screen, which solves that pesky issue where changing tabs on a fullscreened terminal.app causes the OSX topbar to slide down and intercept your click. Tab titles change color depending on the kind of activity that's going on within. Hotkey mapping is a lot more powerful, and lets you send arbitrary hex/escape codes with hotkeys. There's a drop-down mode, like Tilda or Visor. This might just be placebo, but I'm pretty sure it also glitches out less often than Terminal.app.
All in all, everything is just a little bit nicer than the stock terminal.
 officially http://zsh.sourceforge.net/, but you want http://ohmyz.sh/
* 256-color support. This was added in Lion I believe.
* There's a really weird bug with word-wrapping that only manifests itself in Terminal.app: http://superuser.com/q/46948/5966 As of 10.9, I believe it remains unfixed.
With that said, I'm going to give iTerm another try - the tmux support is intriguing...
thanks for this, didn't know this was possible!
I do prefer Terminal.App. To me it feels more polished and stable and I'm used to it and it comes with the OS. I appreciate iTerm and the work put into though and it's what I currently use, but if I could get my Vim setup working in Terminal.App I would switch back.
I've been using Terminal on Yosemite, and for what it's worth, the Solarized theme works properly. I'd forgotten how much trouble it was in the past.
My current setup is to run tmux inside Terminal, with the 'Option as Meta key' flag enabled. Then configuring tmux to use Option-A (instead of Control-B) preserves the standard emacs shortcuts. So Control-A and Control-B still work to move to the beginning of the line and back a character. Mapping Control to Cap Locks, and using Option-A for tmux has served me well so far.
I agree that Terminal seems more polished (start up time and ability to keep up with typing speed - iTerm seemed slightly laggy compared to Terminal). But I'll give iTerm another try - the configuration options are impressive.
And no, Terminal.app does not have full-screen mode that is useful. Lion-style fullscreen apps are absolutely useless to me, since you can't bind them to ctrl-[1-9] hotkeys to switch between spaces.
Any time I hit my special trigger key combination, it will 'launch' that app. If it is open it gives it focus, and if it is not running it opens the app. This means I can rearrange my apps and desktops however I like and I always instantly travel to the app I want next.
Terminal is command-shift-I anywhere. Chrome is command-shift-c for example. Firefox is command-shift-f. Let's say I'm editing an HTML file over ssh and I want to test it. It doesn't matter whether chrome or Firefox are running, full screen, on the same virtual desktop, if I strike command-shift-c Chrome is instantly in front of me. I flip between programs all day and don't use my dock except to empty trash (and yes I know command-option-shift-delete but that is living on the edge!)
It works just fine, I know where every app is, so I just go directly to that space with ctrl-$SPACENUMBER
Now, note that I say full-screen, I mean "with menu bar visible, maximized using Divvy." I can't use system-provided full-screen API, because I lose ability to use only keyboard to navigate around.
Not sure if Quicksilver has this, but one nice feature is that if, say, Chrome is currently active, and I hit its key-combo (control-shift-c), Chrome is hidden (the equivalent of command-h). This is great if you're installing something in the background and want to see if it finished without reverting back to the dark ages of command-tab.
It's especially nice on a laptop, because I can expand all my windows to fill the screen while still having near-zero overhead when switching between apps.
What if I have 6 full-screen Terminal windows (connected to SSH servers, tmux sessions, and so on), and I need to switch between them? Your comment prompted me to install Quicksilver, but it doesn't seem like it can handle that. I'd be glad to hear if I'm wrong.
Smarter "dobule-click to select" logic. iTerm seems to highlight exactly what I want when I double-click in the area. Last I tried Terminal, it missed the mark.
Select to copy. I know some people can't understand why anyone would want this, but I've become accustomed to it. One thing that does still annoy me, even with iTerm, is that I find after I select something I need to move my mouse for it to copy.
I imagine 256 color support was a deal breaker before Lion, but I'm still an iTerm guy because of those reasons above.
So what is it?
iTerm exports its color profile as shell variable, so you can have vim adjust its color theme to match the terminal theme.
It has better full screen support.
It has support for foreground/background color of the text the cursor is over, which Terminal.app does not have at all. This is why in vim if you cursor is over syntax highlighted element whose color is similar to the cursor color, it become incredibly hard to tell where the cursor is (esp. on large screen).
iTerm has "highlight cursor feature", to quickly show you where the cursor is (CMD+/). This is useful if you went away from the screen for a while and you come back, and can't immediately spot the cursor.
iTerm has better font rendering (more like GUI Vim) because it is a Cocoa view.
iTerm allows you to split terminal windows both horizontally and vertically.
The list goes on, but these are some highlights. Essentially, you have more control over your terminal.
> Deep tmux integration. iTerm2 can speak directly to tmux and display its virtual windows as native windows or tabs, making tmux much easier to navigate.
I actually prefer Terminal.app otherwise, but the tmux integration is so good it's worth it just for that.
That's reason enough for me...
Every time I install it on a new computer I have to google a bunch of places and set up the key bindings again
If you use tmux, iTerm is the obvious choice. They've been working on better tmux support for a while now.
* search starts from the bottom of the buffer (most recent result).
* I can cmd+click filenames with line number (in error messages) and have them open in my text editor with cursor on the right line.
* notifications when background tab becomes idle - notifies about finished long-running builds/installations, etc.
* much better, customizable keyboard shortcuts. Supports meta keys properly. I have keyboard shortcuts for opening a tabs connected to my servers, disabled annoying "Print" shortcut, etc.
I also quite like that iTerm allows non-Lion full screen mode. That combined with some tasteful transparency lets me see stuff happening while I'm poking around at the command line. It's nice to visually see the result of a Control-C or the relaunching of a web server.
Unlike most others it seems, I don't utilize the tmux integration, despite using tmux heavily.
However, MacVim improves again on those two points, so I end up using that.
I made the switch from Terminal.app myself when iTerm finally added the feature, but Terminal.app had this functionality available via a SIMBL plugin (oh man, remember those?) called "Visor" for several years, but it was always a hack that would stop working for a few weeks/months whenever a new version of OS X was released.
It looks like Visor has now been replaced with TotalTerminal, another hack in the form of a wrapper application bundle: http://totalterminal.binaryage.com/
2. Problems with displaying my favorite font, ProggyClean, in Terminal.app.
Ideally, I think tmux would be inseparably integrated with the terminal emulator, with no shims to add complexity to the UI. For instance, it irks me that the workflow for integrating iTerm with tmux is running `tmux -CC` and then leaving that window open in the background for as long as it runs. I'm bothered by the fact that I have to run a command to begin the integration in the first place. Wouldn't it be better to check a box in preferences that says "Integrate with tmux if tmux is installed" and then from then on make sure that the tmux concepts of sessions, windows, and panes deeply align with corresponding concepts with iTerm?
I use tmux partly because I come from a background of low resources, but also because I want my essential tools to use as little resources as possible so that they always work as well as possible on any system.
Yet iTerm proposes that you use their GUI tabs, split their GUI terminals instead of drawing it all with tmux in one text console.
I guess you sacrifice some resources for usability.
set -g mode-mouse on
set -g mouse-resize-pane on
It appears that once you've created a tmux session you need to manually add tmux commands in a dialogue box.
I'm a little surprised more people don't run into this more often. I've never seen the benefit in running tmux locally. Do most people only ever use tmux on one remote host?
Edit: it's been a while since I've tried it; apparently tmux integration doesn't work over mosh at all. So s/mosh/ssh/g above and it still applies.
For me personally, I use ctrl-a instead of ctrl-b so I have this line in my ~/.tmux.conf:
#send prefix to nested sessions with C-a
bind-key C-a send-prefix
I take it with nested tmux sessions, cmd-D would split the outer tmux window? How would you split the inner tmux window?
It's worth checking your config file out.
And I'm not sure how to answer your question because the way iterm integrates with tmux is that it allows you to create split panes with their own bash sessions. If you want to run tmux in those sessions, it would be tmux running in that pane, but textually instead of graphically. Here's a screenshot to make things more clear: http://i.imgur.com/0hmw62I.png
cmd-D would just create another pane to the left.
That said I'm a bit worried when I read stuff like "manipulate the pasteboard remotely" and "performed when text matching a regular expression is received". Are these potential security concerns and/or what is the performance impact of regex'ing every single line of text etc?
Okay: iTerm can put borders around its windows, which one of my friends says Terminal.app's inability to do makes it unusable for him. But beyond that, I just haven't been sold. (If that's the right phrase for free software. You know what I mean.)
[Edit: I think the tmux integration was a 2.x-dev feature, so I must have been using that. IIRC, I actually preferred tmux's own "window" handling.]
For those who don't know about the hot key; I press "Ctrl-~" to have a terminal screen dropdown from the top of the screen. You can have any number of tabs and splits there. Pressing the same combination again closes it.
The neat thing is I know I can access the terminal with the same single keystroke, no matter which app I am using. Does Terminal.app has this feature?
Terminal.app can do this with the help of TotalTerminal. I used to use that, but switched over to iTerm for the greater degree of customization.
I'm less about tabs and more about splits, with two 24" monitors and my 13" MBP on my desk I can have lots of text space to work with and very little window distraction from window chrome.
Maybe it's just because I'm old fashioned and I love to live on the command prompt (vim -vs- sublime all day long) and I grew up in the era of TTY's and 300 Baud modems.. iTerm feels more natural then Terminal.app, it feels like a terminal someone would use all day long -vs- something you hop in for 20 seconds to type some obscure OSX command you cut-paste'd from some site.
In the past I ran into dumb emulation issues with Terminal.app like wrapping and stuff that didn't work right. iTerm seems to be a "programmers" terminal more then a simple utility to get to the command line.
Terminal.app used to suck, certainly. I suspect a lot of iTerm users are long-term users who really haven't seen how much better Terminal.app is today than it was five or six years ago.
IMHO Arguing about terminal emulators is almost as religious as arguing about languages. Pick what works for you and I won't judge you if you don't judge me.. Now can we get back to solving real problems.. LOL :-)
Despite all the configurability, it still feels quite minimalistic. A single fullscreen PuTTY window is my favorite way to use a windows machine.
Just kidding, I love PuTTY in windows but it's not my favorite emulator. I actually enjoyed Centry Term's TinyTERM  but I have a feeling that is WAY before most people here's time. I still have a couple 3" floppies with TinyTERM on them and a copy of the activation codes.
.[eE](rror|xception). highlight error lines
:\d+ highlight line numbers in ruby (captures bits of time stamps though...)
[lL]ine \d highlight line numbers in python
I bet there are more creative uses. please enlighten me.
I use Moom (previously Divvy) but they only really give you hotkeys for moving windows around. Xmonad for OS X seems difficult to setup, and I'm not even sure if it does what I want.
Can I duplicate this functionality using iTerm, without using AppleScript?
 Here's the code; I cobbled it together from some StackOverflow snippet or something: https://gist.github.com/anonymous/f16a46c327a14ec8a5b5
I have a config that looks like this:
- cd web
- cd web; gulp server default watch --device desktop
- cd admin
- cd admin; gulp dev
- clear; ssh firstname.lastname@example.org
- clear; ssh email@example.com
- clear; ssh firstname.lastname@example.org
The last time I looked at iTerm2 it had a separate window where you had to TYPE the name of the server you wanted, which is WAY more work than pointing and clicking a single name in a side list.
The developers seemed to think the old side dock was bad and refused to add it back in.
Details on the protocol are here: https://docs.google.com/document/d/1ABI0kqUUxoAjxhWW3AsWFis6...
Generally, it seems there is a lot of room for improvement in terminal apps these days:
- Probably upwards of 90% of my terminal work involves SSH, and it seems like a huge missed opportunity not to integrate with SSH in any significant way. iTerm doesn't even bother, whereas Terminal.app's "New Remote Connection" is pretty useless. (It should at least be able to infer my commonly used hosts from OpenSSH's known_hosts file.)
- A terminal should be able to discover the currently running remote process, or at least what host I'm connected to. Neither Terminal nor iTerm do this. My tabs always say "ssh", and so I have to hunt for the right tab to find my shell.
- Persistent shells. Today, when I want to open a remote shell on a host, I open a Terminal tab and do "ssh <host>". If something goes wrong with my connection, I have to go back in manually, and the shell state is lost, and any interactive program not running with "nohup" will probably have terminated. If I close a tab and ssh back in, my state is also lost. If I want multiple shells on the same box, I have to either use multiple tabs, or a kludge like screen or tmux that tries to be a terminal within a terminal. I want to ssh to a server and be exactly where I was.
- No I/O integration. Why can't I cat a file into my terminal app in order to copy or download the contents? Why can't I pipe a local file into a remote shell?
- Grepping. It would be swell if I could tell the terminal to filter its current window contents by a pattern. I don't mean highlighting results, I mean only showing lines matching a pattern. Often I end up doing "tail -f some.log | grep foo", then "...grep bar", "...grep -C10 bar" because I'm not quite what I'm looking for. With this built-in grepping feature, I could do "tail -f some.log", set up a pattern in the terminal app itself, and I could watch it display different matches interactively as I change the pattern.
(Yes, I do use tools like Puppet and dsh for configuration management, and probably should use them more, but sometimes you have to get your hands dirty.)
Unfortunately iTerm's solution is even less useful than Terminal's remote connections, since in iTerm each profile have associated settings like colours and cursor type, things which should be the same across all connections.
Can anybody confirm whether it works on 10.6?
Still doesn't work for me :(
iTerm 22.214.171.12440629 is currently the newest version