Cool guide. For beginners I'd also suggest restraint with your dotfiles. It's easy to rush into installing oh-my-zsh and using vim with every plugin you can find, but I found that made for a really confusing learning experience, especially if your config ever breaks.
I went from Vim and shell beginner a couple of years ago to a serious user, and built up a nice set of dotfiles along the way.
Janus and oh-my-zsh were big for me, but I never actually installed either one.
Instead, those were my Vim and Zsh department stores.
I'd get the itch to try something new, so I'd "go shopping" at those projects, find something new to pull into my config, and I'd learn to use that plugin or make sure I knew what that shell option was now doing for me.
Then, eventually, I'd get the itch and go shopping again.
Over time, I built up my dotfiles. As I learned, I naturally found myself ditching some of the plugins I pulled in along the way, and modifying or replacing some of the shell config with my own creation. But those projects we're great sources of some early "wins".
That's actually why I stopped tweaking things to hell and back, losing my config's was too painful. I usually just go for basic colour tweaks these days. It also makes me more portable and productive when I am using a new or someone else's machine.
I used to be all about portability, too. Worse, I was worried that other people needed to be able to work on my computer. So no Vim or Emacs, and always keep things simple.
You know what? I don't care any more. My computer is my computer. It does not need to work for other people and I don't need to work on other people's computers much. My Emacs loads many plugins, my Visual Studio is using ViEmu, I replaced my Finder and I remapped some keys on the keyboard.
This makes for a crazy confusing experience for anyone who sits down at my computer, but it works for me. And as far as compatibility is concerned, my Emacs init.el will automatically download and install all plugins it finds missing, so setting up a new computer is about as complex as copying one file.
Its not so much about others as I don't want to spend 3 hours setting up e very machine I touch, ie servers, borrowed machine etc.... I'm just as productive now (after a month of adjustment) but without the setup time.
I carry Emacs in Linux and Windows versions, along with xmodmap scripts to make caps lock a control key and switch it back again, on a flash drive just for that reason --- then I have the necessities available on every machine I sit down in front of.
Servers are a different story, but the ones I work with are all running Linux and have vi, which will do.
> Its not so much about others as I don't want to spend 3 hours setting up e very machine I touch,
Most of the configurations just need to be copied. Just copy your .vim folder and you are setup with everything. Copy your .screenrc and that's that. I sync my dotfiles and then run a small script to set symlinks. That hardly takes 2 minutes.
I used to take this approach. One day I found I had no choice but to remap CapsLock as a second Ctrl key because my little finger was in constant agony otherwise.
I've never had a second's trouble from the finger since then, but you should see me try to type on other peoples' computers now. I TEND TO WRITE IN ALL-CAPS A LOT BY ACCIDENT!
So for me there's no longer much point in caring about portability, and I have aliases and keyboard shortcuts and fancy PS1s to spare.
Yea, CapsLock must die and reborn as third Ctrl. Not only because of all caps, but some folks tend to map it to keyboard layout switching only because it gives them LED indication of the language being used.
It also makes your keyboard habits more portable, as laptop keyboards have different order of Ctrl and Fn.
I've run into the same issues. My solution is to reach a sort of balance between portability and usability.
My xmodmap + XMonad config is designed to be reproducible on Windows via AutoHotkey and OS X via SizeUp + PCKeyboardHack, that way I'm always in my home environment no matter the OS!
I'm not on a Mac at the moment so I can't tell you the exact wording of the preference, but I just set it up through the hotkeys section of the keyboard system preferences pane.
One of the options allows switching window focus, and another allows switching through windows in the active application. There's no option for switching backwards, however. The way I deal with that is to separate any xmonad specific functionality behind a prefix-key submap in my XMonad config.
Any hotkeys that don't take the prefix I can use on any OS, the ones that do are xmoand specific. To me this keeps things nice and organized, while still letting me exploit the xmonad-contrib stuff to the full extent.
For example, instead of mod-j/mod-k, I use the window navigation extension behind the prefix so I get finer control over focus navigation, and this makes xmonad function precisely like tmux just with a different prefix key.
How do you lose your configs? Store them in github/dropbox and sync.
> It also makes me more portable and productive when I am using a new or someone else's machine.
With dedicated work and personal laptops, using a new or someone else's machine isn't a commonly occurring event. I would rather optimize for what I have 99% of the time.
Being lazy usually. Also a mixture of devices and machines long before dropbox. So I became used to the defaults before there was a good solution to sync.
You don't do much work in large corporations I guess. When issued equipment and not having to much control you find it easier to just adapt, which is what I did.
> You don't do much work in large corporations I guess.
I used to work for one. I still do but now I use my own laptop. But that's not the point. The point is if you have a machine, you don't need special privileges to write to your own home directory. If your org stops you from pulling things from the internet, well, that's a different story.
Yes, so much easier to use your own machine for development just because you have control over everything. I'm sure some people need specialized machines, but for most... sticking to one laptop or ssh server really simplifies everything.
How do you lose your configs? Laptops mean you always have your machine, github (and like) means you have your configs even when you don't, and of course backups mean never losing data.
That's a good tip. I try to keep my .vimrc down to about 20 lines and a couple of plugins (NERDTree and solarized, mostly). My .zshrc is probably a bit more dense, but I actually have it orgnized into separate files, and just source them from .zshrc.