Supercharge your Sublime Text 3 to increase your productivity
hackernoon.com
hackernoon.com
I was one of these people, I spent 6 months using Vim and 6 months using Emacs, but eventually came back to Sublime because I could customize it with plugins (like Vintageous) that made it even more powerful and productive than Vim or Emacs. Especially because I wasn't constantly wasting time debugging bugs created by interactions between the piles of hacks all the Vim/Emacs plugins used.
I spent 6 entire months contributing to Spacemacs fixing bugs and broken things and there was no end to them in sight. I realized that while I switched to Emacs to get more work done on my projects, I ended up ditching all my projects in order to fix broken Emacs things. That's when I switched back to Sublime.
I am for many years now primarely vim user. I use it now mainly, because I've got used to it and it's available everywhere. I was once a no-mouse-only-keyboard user, but now it all seem like busy-work. I would prefer just to point out what I want. I am not affraid of typing as I mainly use command line and like to use ocasional pipeline with some awk scripting to achieve output that I want. I find Unix toolset more approachable than vim.
It's just that I feel like every magic incantation of vim commands spends my mental energry. I feel smart after some complex edit with only a couple of keystrokes, but a bit less focused at real issues. Editing is such a small part of programming. I understand that people may not have such problems, but that's me.
My dream editor would be something like Acme [0], but a bit more modern. I even started doing my own experimental editor [1] inspired by Acme. I mainly want a mouse driven editor with easy ties to shell. Unfortunately my development pace has been glacial for some time.
People may think their ace-jump and fancy motions are faster than the mouse, and they may be faster than the overhead of moving your hand to the mouse, plus the clicking, but when your hand is already on the mouse, the mouse is so much faster.
One great thing about Sublime's vim emulation is it is better about interacting with mouse use than other vim-things, including vim itself.
I also find Sublime is great at not taking "mental energy" like you mention. Multiple cursors can do basically the same thing as vim macros, but with macros I have to think hard about whether my commands will generalize and exactly what I want to record, but in Sublime I can see immediately if things are working (yes Vintageous works with many cursors).
Similarly the infrequently used commands take much less memorizing. I can do weird finds like "find in all .rb files in project, whole words, case insensitive" and then immediately convert my command to a replace without retyping all the other conditions or using an entirely separate command. In Emacs I'd have to Google how to do this since I do this kind of thing infrequently.
For tying to shell there are Sublime Text plugins that could do that, and writing your own would be easy. Personally I use one that allows me to run my selections through a Ruby script, or even evaluate my selection as Ruby. Example: I wanted to sum a comma separated list of arguments, so I select the first comma, spam "cmd+d" to select the rest I wanted (but not the whole file), type "+", select in parentheses, then replace the selection with the ruby evaluation. It was super quick.
I used vim for a few years, got used to that zsh+tmux combo, and my environment was mostly wrapped around Vim (not UNIX like I thought it was). Then after I gave Emacs a shot, I used GUI version, and I saw that it is not the end of the world because I didn't use it as in-terminal editor. I am seriously reconsidering ditching everything and go to Sublime.
Why? It's fast, sleek and it does the job. With Emacs I start working on something, and few hours later I am like "why the fuck am I writing lisp and tweaking emacs". I get it, people that used it during 90s, and for 10+ years, they are set in the stone, and why would they switch. But now I really reconsider my options. Vim is much better in that aspect, I spent years with it and have it much or less to my liking, but I always come to some edge case where I change editor.
For example, I want to practice few exercises from SCIP I need Emacs, because Lisp programming in Emacs is so effortless and good. I want to write some Go I jump to Vim because vim-go just works perfectly for me. When I am doing some admin work on system I run Vim, but when I want to play with Clojure I need to go back to Emacs. You see the trend? How would Sublime cover all those functional languages, is it any good?
If I could have extremely light version of Emacs, that worked in terminal, much better and much more flexible than og Emacs, with good support for REPLs. When you break the no-mouse barrier, you see huge boost of productivity, but later after some time it diminishes and returns. I know I do not want Electron based editor. Terminal preferably but not the key. Something swift and clean. Vim does the job 80% of time but functional languages just work better inside Emacs.
I am holding my breath for Xi Editor [0]. It's written in rust, has some interesting abstractions and implementations, native is priority, and overall looks like potential checker for all my boxes. But it is nowhere near to the point of replacing vim or emacs for me. I rambled too much...
With Sublime I tend to use a separate terminal app for doing all my code running and things. So if I'm working in a REPL-like language I do it there. There's also plugins for most languages that do the editor integration I actually want, like autocomplete and highlighting.
Now, how you manage using separate terminal and Sublime, I mean is there any communication between REPL and Sublime, or you just copy/paste code from editor to REPL? Since in Emacs you can evaluate snippets, functions and do all that nifty stuff... Actually I am afraid maybe to jump and give Sublime a shot, but now it looks like I got nothing to lose. If I manage to cope with REPL in separate terminal app I think I am sold. Magit was nice, but I am fairly proficient in terminal git so it's not a deal breaker, and I never used org-mode (I love paper notebooks for that), so I might be able to adopt to certain extent.
Also for git there is https://github.com/divmain/GitSavvy which is almost as good and sometimes better than magit. There's also terminal git, I generally use a combination of terminal and GitSavvy.
Wes Bos has a book Sublime Text Power User [3] if you're looking to do even more advanced things, especially with workflows.
[1]: https://www.sublimetext.com/docs/3/
* You can't add multiple folders to a project. This is fucking irritating. * The git plugin doesn't work on subfolders - IE because of problem number one, I put a group of (say, microservices) into a parent folder and add that, which in turn breaks the Git plugin.
If you can ignore those things it's bloody brilliant. Obviously after you've added a bunch of extensions and stuff to spruce it up.
It feels faster than Atom, too.
1) Uses Chrome's font renderer - it looks terrible on Windows
2) Indent = Tab size
3) Themes can't properly customize some key on-screen assets
4) No macro recording/playback
5) Can't edit enormous files
Other than that the add-on ecosystem can be a bit fiddly, and you won't find syntax highlighting for more oddball things that you'd 100% find for vim or Emacs.
Oh, and sometimes it ends up using 100% of the CPU in the V8 GC. Might be add-on related.
Just writing a bit of code in Atom shouldn't rinse a fairly new MacBook Pro in under three hours.
Sublime, on the other hand, lasts all day.
I'm very hesitant to standardize on a non-OSS editor, though, so I think Sublime is out for me.
A gig of RAM is probably less than a tenth of your total resources. If it makes your job easier, surely it's worth it, no?
I ideologically like the idea of OSS, but I'm past sacrificing usability for it. Hence I'm on a MacBook with macOS coding in Sublime with 12h battery life, instead of on a XPS13 with ElementaryOS coding in Atom with 7h battery life. Or a bulky, ugly Lenovo with great battery life but a horrible touchpad and a shitty screen. But on all of those situations I'd torrent with Transmission, because it looks beautiful, is consistent, and to top it all off is the lightest and smoothest torrent client there is.
These things are true. I still use Atom on my MacBook Pro though because it has, at least in my corner of the world, a much better ecosystem than Sublime. I do keep Sublime around for the rare cases where Atom can't handle something, but if I didn't already have a Sublime license, I wouldn't feel the need to pick one up: Vim is more than capable of handling the large-file case for me. We all have different experiences though.
> Or a bulky, ugly Lenovo with great battery life but a horrible touchpad and a shitty screen.
The new X1 Carbon with the OLED panel is pretty good, I think. Color accuracy is something of an issue, but it does cover Adobe RGB and should be fantastic for anything other than professional-level color-critical work. That's neither here nor there though.
> The new X1 Carbon with the OLED panel is pretty good, I think. Color accuracy is something of an issue, but it does cover Adobe RGB and should be fantastic for anything other than professional-level color-critical work. That's neither here nor there though.
Just Googled it. Just from the Google images:
* Why is there 'Thinkpad' sprayed on lower-right corner? Ugly and useless.
* Touchpad mouse buttons, circa 1990
* Red-black color scheme
* Mouse nipple (I know this is Lenovo thing and people actually buy them for it)
I realize style is subjective, but very few people are going to pick the X1 over either the Macbook or the XPS13 in terms of design. And design matters. Not only in a 'oh this looks nice way', people are actually measurably more productive on attractive gear.
When I'm doing development, I spend most of my time interacting with Atom. If I had to buy another pair of 16 GB DIMMs just for the sake of running it, I would. This is what I do professionally and I'm happy to throw a little RAM at something that makes my job more enjoyable and myself more productive.
I appreciate easy customization as much as any dev, but, in this case, I don't know if that's an advantage when as a result Atom doesn't do its primary task terribly well: stay open all day, let me type code.
I'm not suggesting Atom is better than Sublime, and there are definitely many cases where Sublime is better than Atom, particularly in terms of performance. I just think Atom gets more abuse than it should given how useful it is in general. Many of the complaints I see are more rooted in what they feel an app should do in the abstract (e.g. idle at under N megabytes of RAM) rather than actual issues that affect their use of the tool.
Presumably everything Electron based is using Irregexp under the hood, so I doubt that's a real competitive advantage.
The performance difference between Atom and Visual Studio Code is interesting, given that they're built on the same framework.
2) What exactly do you mean by this?
3) This is true, the scheme is great, but themes aren't really there yet. The default is nice enough, though.
4) Also true, perhaps a plugin could work? I have no idea where I'd use macros though. What do you use macros for?
5) Also true, I use vim for those but it's a rare case.
The CPU issue seems weird, I certainly don't get 100% CPU.
2) You can't set tab = 8 and indent = 2. This isn't common, but sometimes one deals with foreign sources where that's an issue.
4) Repetitive editing tasks where just doing them once is much faster than coming up with a shell/sed/awk/perl/python on-liner. I switch to vi for those right now.
2) Also fair enough, I don't find that I have to deal with this too much. Can you switch editor for those files? It's only a Cmd+Tab away :)
4) I use multiple cursors for stuff like this.
There are some pretty good github pages out there to help configure your vimrc into a monster. Ultimate vimrc is a pretty good baseline if you take the time to trime away some cruft.
[0] https://github.com/textmate/textmate
Edit: Assuming you are on macOS.
- basic refactoring
- go to method definition
- move back / forward in the history of selected lines
- project-wide search
- quick switch projects while reopening the files where I left off
are all faster (for me) in Sublime. Also auto-completion, though to be fair there are probably packages for this, I just tend to use vim for quick changes and haven't invested in heavily customizing it.
I've never really had a problem with goto method definition with ctags, and I've used that with multiple languages. ctags is usually relatively fast generating the tags, and you could probably set up so that it generates it each X seconds if you wanted.
For the project wide search, ctrlP has served me well, although the fuzzy completion is far from good (command-t is way better at that), so I would probably recommend the second one if your project is large.
Regarding switching projects, I've been using tmux for quite some time and it's a blessing. I could not imagine someone spending a lot of time in the terminal with vim and not using tmux or another terminal multiplexer. tmux is for me as important as vim itself. It makes a big difference. I have different sessions for different projects .
You have probably heard about youcompleteme. It's not amazing (doesn't come close to intellij), but it works and it's free, so the last thing I will do is complain :)
I'm not sure I understand the move back/forward in history. Do you mean undoing just some specific selected code?
vim is far from perfect. The more I use other tools, the more I realize it's limited in a lot of ways, but unfortunately when I try to use other editors, I find too many shortcomings too, so right now for me vim is the best I have =)
Regarding jumping back/forward, I didn't describe it super well. Here's the official description [1]:
> Jump Back and Jump Forward - Jump Back allows you to go to previous editing positions. This goes hand in hand with Goto Definition: you can now inspect a symbol definition, and quickly jump back to where you were previously. Jump Back is bound to ^Minus by default.
[1]: https://www.sublimetext.com/blog/articles/sublime-text-3-bet...
c-t: will bring you back to the previous location before jumping. this is the right way to do it if you jumped from another file by tag
c-o: if you run commands like gg to go to the top of the file, c-o also tracks this as a previous location. useful to know if you need to check something at the top of the file and you want to go back to where you were before pressing gg. also tracks tags, but of course if you jump to a tag, then gg, then press c-o it will bring you back to the position before pressing gg instead of the file you jumped from for the tag (more often than not im a victim of using c-o with tags)
Have fun!
- fuzzy search example uses ctrl-p, should be ctrl-shitf-p
- idem for wrap lines example
- Put your cursor on a word, then hit ctrl+d it will select that word. just double-clicking seems faster (though I reckon if you'll be using ctrl-d repeatedly afterwards anyway it might not matter)
So typing ">" + Enter or even " " + Enter inserts the <a href=""></a> snippet. So I literally can't insert a newline at the end of any content without hitting escape.
Doesn't seem to happen in other languages. But I couldn't find how or why or how to prevent it. So I gave up. In a related note, I found documentation a bit limited.
Sublime actually tries harder than other editors to avoid these, but it's not perfect. See for example https://github.com/sublimehq/Packages/blob/master/Ruby/Compl... which stops it from autocompleting on common end of line keywords in Ruby. This wasn't a default in Emacs so I had to spend a couple of hours figuring out how to do this myself before I could do newlines: https://github.com/syl20bnr/spacemacs/pull/174
I'm not sure there are any editors that have auto-complete on enter but don't have any issues with conflicts.
Would love to venture more into the terminal/tmux/vim land but not lose a lot of the nice key bindings that I have been accustomed to with Sublime. I feel like this is the natural progression of being a productive hacker but will wait probably until the end of the year before making the switch.
It's also one of the only programs that has never lost any of my data, even in the extremely rare event that it crashes it's always preserved everything.
If anyone knows how to force it to do that I'm all ears, it's easily my biggest complaint about ST3.
All I can of (off the top of my head) is slower and chews more memory but is open source.
Do you have examples where the Atom/VSCode package is much better maintained than the ST3 one?