I use block selection so often that I've switched the mappings in my vimrc. I have v mapped to visual-block selection and ctrl-v mapped to visual selection. It's very rare that I miss normal visual mode as I use block and line selection more than anything.
I have hacked my tabline to be a list of my open buffers. It still functions as a tabline, for those of you who use tabs, but it's kinda nice to see all my open buffers in a nice list across the top of my screen.
Does anyone have any advice on bindings to change split size? Ctrl-w + and Ctrl-w - just don't work well, and my current configuration shadows Ctrl-a, which I really would like to avoid.
I rarely resize windows, but when I do, I set mouse=a and use the mouse to drag the window borders around. There's also CTRL-W _ (underscore) to maximize the current window and CTRL-W = to make window sizes equal.
I'm in the same boat, rarely re-sizing windows, and I'd do the same thing, but I use Tmux and terminal Vim and using the mouse there just doesn't work in my terminal emulator. (I use st[0] on Linux. It probably would work in iTerm on Mac, but I haven't tried.) It also may not work due to Tmux being configured with mouse support.
Also, did you know that Ctrl-w | maximizes the a window horizontally? So if you have splits open above and beside you ctlr-w _ ctrl-w | will maximize your current split.
It might be dangerous, and I recognize it's one of the less portable aspects of my (old) vimrc, but I used to set up and down arrows to split resizes, and left and right to prev/next buffer.
I read the help, it's pretty awesome. There's a few bindings in there that I had no clue existed, like Ctrl-w {H J K L} to rotate windows, and ctrl-w f to split window and edit the file under the cursor. My problem is that the default bindings are just a pain to type. Ctrl-w + is a lot of work when you have your window navigation bindings set to CTLR - { h j k l }
I'm an OS X guy by birth. My dad has used Macs since the 512ke, but a year or so ago I tried Ubuntu and Crunchbang. I loved Crunchbang, Unity, however, got on my nerves. Eventually, I got fed up with how slow Debian stable updates and didn't want to try Debian testing because the "testing" idea scared me off, so I decided to try Manjaro. I loved the package manager, pacman, and also yaourt, however I ran into a library incompatibility with some software, VLC, I think, so that killed my enjoyment of Manjaro. After doing a practice install of Arch in a VM, I took the plunge and put it on my hdd. I haven't looked back since.
Now I run a customized version of the Awesome window manager on my Arch box, along side OS X. Wouldn't use anything else. :)
I believe the problem comes when trying to do stuff like check to see if a file is in a directory. I'm a ZSH user myself, and my default scripting language is Python for similar reasons to the OP's for inventing Bish. I can't for the life of me figure out the syntax for an if statement, especially for things like checking if files exist. Yes, Bash or Zsh have a shorter syntax for the example, but to do something like this[1] in bash/zsh would be, for me at least, needlessly difficult and painful.
I'm with you. I have written a mountain of Bash scripts to solve various one-off problems, and I'm fucked if I can ever remember the nuances from one time to the next -- when to use [], when [[]], when () or (()), when the dollar sign precedes (), etc. Every single time I have to do anything in Bash I have to re-learn Bash. I suppose I keep using it because, even with having to re-learn every single element of Bash coding every time, it's still faster for doing a bunch of filesystem stuff for me. But god, I hate it. I can't think of a computer technology I hate more. I hate it more than R, and I really hate R too, for some of the same reasons.
I keep intending to learn Perl really well, which I think could absorb much of Bash, and also Awk and Sed, and then there would be only one thing I needed to know for this kind of work, and I might use it enough to remember the various weird syntactic bits from one month to the next. But I never quite get over the hump.
Always use double-brackets [[ ]] if you're writing Bash (not sh) scripts. They are better.
Double-parentheses (( )) are only for arithmetic, e.g. "((count++))" or "echo $((1+1))"
The dollar sign precedes parentheses--i.e. $()--when you're substituting the output of a command, e.g. "echo Today is $(date)". It's easy to remember, because it's just like using the dollar sign for substituting the value of a variable, i.e. "date=$(date); echo $date".
You might want to look into the fish shell. Its scripting is much less idiosyncratic. You don't have to quote any variables, arrays, or command substitutions. e.g.:
set foods apple banana 'cucumber casserole'
for f in $foods
echo $f
end
prints:
apple
banana
cucumber casserole
...not:
apple
banana
cucumber
casserole
...as would be the case if you forgot to quote "$foods" and "$f" in Bash.
My dotfiles[1,2] are full of various functions to do stuff. Half of them I jacked from other people[3] when I was using Bash and ported to ZSH when I discovered Oh-my-zsh. However, a few are my own. The ones that I did write are often one-liners that take an argument and pass it to a series of commands that I'd rather not type. For example history | grep -i command, ls -lah | grep dir, or my favorite, cd dir; ls. If I have to do any logic, aside from determining what OS I'm on, I look to python.
You seem like the kind of person who'd appreciate Percol[1]. It's fantastic for shell history. I have it bound to Ctrl+R:
history | percol --prompt-bottom --result-bottom-up
I'm using fish, so the whole thing looks like this:
function _percol_key_bindings
function __percol_ctrl_r
set tempfile (mktemp)
history | percol --prompt-bottom --result-bottom-up >$tempfile
and commandline (cat $tempfile)
commandline -f repaint
rm -f $tempfile
end
# Bind Ctrl+R to percol history function for now
bind \cr '__percol_ctrl_r'
end
I'm a Mac user who half switched to Linux. I have a linux desktop and a Macbook pro running Yosemite. My transition was not terribly difficult. I use ZSH and all the terminal emulators I've tried (Stock Crunchbang, Ubuntu, LXDE on Ras-pi and xfce terminals, along with xterm, and my current favorite urxvt) support emacs keybindings. I'm pretty sure thats a per shell thing though, as I switched ZSH to Vi keybindings with no problem. If you don't use TMUX or Screen, it's not hard to get the normal copy and paste bindings working in any of the emulators I mentioned. With the exception of xterm and urxvt, ctrl-c and ctrl-v usually just work. In xterm and urxvt, you have a little bit of work to do to configure the keybindings, but once that's done, it just works. I like urxvt so much that I'm actually looking to replace iterm2 with something like it. x11.app will run urxvt, but since x is it's own windowing system, it doesn't work with my window management on OS X. Bummer.
When I use a desktop environment my favorite desktop environment is xfce, although I do like Elementary OS. However, normally I'm not running a DE. I started my Linux journey dual booting Ubuntu 12.04 and Crunchbang. Eventually, due to some dumb mistake with apt while trying to install a package on Crunchbang (#!), I reinstalled #! and wiped out Ubuntu. (I to have a hatred for Unity) Eventually, I discovered the Awesome window manager. I haven't looked back since. Awesome is completely configurable in Lua, so any key binding you want is possible. I have super+enter (super is the windows key on my keyboard) set to open a terminal, super+w bound to open my browser, and several other keyboard shortcuts like that. Also, Awesome 3+ has a task runner like Alfred built in. I have it bound to Ctrl+space.
I'm still using Awesome, but now I'm on Arch. I didn't like how slow Debian stable (the base for #!) updated, so I switched to Manjaro and loved it, but I ran into a problem where I couldn't install a library for some software I wanted. (I probably just didn't have the right repositories configured, but I'll never know.) I'd been considering Arch for a while, so I did a practice install in VirtualBox. It wasn't terribly difficult with the tutorial I found on Youtube. After getting everything working in Virtualbox. I did the install on my computer.
I think I've installed Arch on my machine twice now. One of those times I used pacman to generate a list of the packages I had on one install, saved it to a thumb drive, then wrote a python script to parse the list and install the software I was missing. I set the script lose and got in the shower. When I got out, everything was installed.
Last thing, the Arch wiki is an invaluable resource for all things Linux. Sure, the package management commands are wrong, but the configuration instructions for things aren't. Even if the files are in a different place, the Arch wiki gives you enough info that you should be able to run find or grep in one of the parent directories and find what you're looking for.