Unix world and awesome tmux
In unix world there is a nice ‘tool’ ‘tmux’ - terminal multiplexer.
With ‘Terminal Multiplexer’, you can nicely split up screen and have multiple terminals visible in front of your eyes. While working with python, on one of the screens I had vim running, then there was a screen for interactive Python plus small terminal to issue git commands. I could easily jump between ‘screens’ and also have different work spaces hidden behind the tabs. This setup can be then stored in the file and loaded up on demand. It provides a similar functionality to *.sln and *.csproj files in Visual Studio, but without big IDE that tends to crash and have a painful start up speed.
It’s a pretty neat tool to work with. The user experience is something you need to get used to, but if you are spending some time in command line world, the learning curve won’t be that big.
Windows world with cmder / ConEmu
In windows world, a single window with cmd.exe / msysgit running is mostly all you need. There is a powerful Visual Studio ( with Community edition we don’t even have to worry about complex MS licensing ). Using VS and it’s extension you can just use GUI like interface to do many different tasks. I was surprised that some of my colleagues, for git management, do use either VS extension or SourceTree (recommended). I am using mostly cmd line + git gui.
At JustGiving we are using chef to maintain our infrastructure code, I also need to modify varnish files from time to time. I could do all of that in Notepad++ or even Visual Studio, but in my drive to become ‘friends’ with cmd line i really got used to the ‘gui-less’ world. I don’t want to say that this approach is a must have for productive work, because it would be a lie. Gui interfaces are fine and great, it is just a matter of preference.
Tmux on Unix made a great impression on me and I wanted similar experience in the MS world. First stop, running tmux on Windows. It is doable, cygwin environment gives you that, but colleagues at work showed me a better tool - cmder. Cmder is an extension for ConEmu which is a console emulator. After some configuration it looks like this. Pretty neat eh ?
My current config has 2 tabs.
- 1st with vim instance running, to edit notes stored on dropbox
- 2nd with vim for editing files and coding + 2 msysgit instances and 1 cmd line running
This setup gives me a nice environment for editing files not related to Visual Studio and .NET. Another neat functionality are customized Tasks. I am using those to store different project workspaces. One task equals one workspace. Thanks to that I can easily start another ‘project’ and initialize it by opening specific folders and specific files in Vim. It is a lot faster than doing everything manually.
To get this setup:
- Settings -> Startup -> Tasks
- create new predefined task with + sign
- And add this code
-new_console:d:C:\Users\mfranc\Dropbox "%ProgramFiles(x86)%\Vim\vim74\vim.exe" /k
-new_console:d:D:\ "%ProgramFiles(x86)%\Vim\vim74\vim.exe" /k -cur_console:n
-cur_console:d:D:\ "%ProgramFiles(x86)%\Git\bin\sh.exe" --login -i -cur_console:n:sT25V
-cur_console:d:D:\ "%ProgramFiles(x86)%\Git\bin\sh.exe" --login -i -cur_console:n:sT66H
cmd.exe -new_console:d:D:\ -i -cur_console:n:sT50H
What does those commands do ?
1. Creates new screen and opens Vim in my Dropbox folder context
2. Creates new screen with Vim pointing to D:\
3. Initializes shell in new window and splits current screen into 75%/25% Horizontaly
4. Initializes shell in new window and splits up the existing window into 33.3%/66.6% Vertically
5. Initializes shell in new window and splits up the existing window into 50%/50% Vertically
I have barely scratched the surface of the ConEmu and cmder awesomeness. Its functionality is more powerful than just split screen functionality.
Jakub Jedryszek asked a couple of good questions:
How to install cmder as an extension to ConEmu ?
It is simple. Standalone version of cmder already contains ConEmu. Installation is simple, download, unpack run -> http://bliker.github.io/cmder/
How to configure vim with plugins on windows and which version to use ?
You can install GVim which is vim with Gui-like interface for Windows. One of the plugins in the screen is NerdTree. To install it you just need to copy paste this file NERD_tree.vim to C:\Program Files (x86)\Vim\vimfiles\plugin. If you have multiple plugins then pathogen.vim is also recommended.
For starters with vim, it is better to start with vim-tutorial then move to vim as a Notepad replacement. Another step is VsVim. It is really a great, stable extension for Visual Studio that plays nicely with R#. I have been using VsVim for past 3 years and it was always great. I am also using Vimium which adds vim like feel to Chrome.
Are you using vim to amend / create commits description in git ?
If you have msysgit installed and you use cmd line then by default you will use vim, and yes I am using it 85% of the time, around 15% is done with git gui and rarely tortoise-git. Tortoise is mostly handy for git history checkup or blame, but lately it has been replaced by github
It is recommended by Maximus5 to update ConEmu to new version. Current cmder contains ConEmu version 140707(preview) while the newest ConEmu is 150309.
List of changes is massive.. To update ConEmu, get the new package from https://code.google.com/p/conemu-maximus5/ and copy its content to ‘your cmder installation’/vendor/conemu-maximus5 folder.
- ConEmu docs