Here are a few of my favourite Linux “performance boosters”. If you think about starting using Linux OS every day (or you are use it already) at your work then this list can help you to boost your performance. List consists of only very general things – this means I didn’t put on it any specific (like git or mvn) tools which can be helpful only in particular cases. Try it out! I’m quite sure you will not be disappointed.
Yup- VIM. I couldn’t start this list in any other way. Could I? 🙂 Vim is not only a standalone tool. It’s more like text-editing approach. This approach can be used within many other tools (IntelliJ, Eclipse, Browsers (there are plugins!), Sublime, Kate, Visual Studio :)). Also I did try neovim, but probably my knowledge is far too small to use anything than standard vim functions. I’m aware that learning curve is shallow, but every little step further makes you much more efficient during text processing (efficient text processing is quite important during programming :))
2. ZSH instead of bash
I still remember that moment when I moved from bash to ZSH and it was really big step forward in my day-to-day performance. ZHS together with oh-my-zsh its a whole new level of possibilities to improve how you do every day tasks. For instance completions – git, gradle, mvn, httpie, npm, docker, kubectl are fantastic. It’s already there and work out-of-the box, so in almost no-time you can boost how you manage things from CLI.
╭─dpokusa@venture ~/projects/demo ‹master*›
╰─➤ git c
cat-file -- provide content or type information for repository objects
changelog -- populate changelog file with commits since the previous tag
check-attr -- display gitattributes information
check-ignore -- debug gitignore/exclude files
check-mailmap -- show canonical names and email addresses of contacts
check-ref-format -- ensure that a reference name is well formed
checkout -- checkout branch or paths to working tree
checkout-index -- copy files from index to working directory
cherry -- find commits not merged upstream
cherry-pick -- apply changes introduced by some existing commits
citool -- graphical alternative to git commit
clean -- remove untracked files from working tree
clone -- clone repository into new directory
commit -- record changes to repository
commit-tree -- create new commit object
commits-since -- list commits since a given date
config -- get and set repository or global options
contrib -- display author contributions
count -- count commits
count-objects -- count unpacked objects and display their disk consumption
create-branch -- create local and remote branch
cvsexportcommit -- export a single commit to a CVS checkout
cvsimport -- import a CVS "repository" into a git repository
cvsserver -- run a CVS server emulator for git
You can select option by using tab key. Of course it’s not only about completions 🙂 There is a lot more (possibility to auto syntax highlighting, great path expansion, path replacement or even spelling correction).
3. I3 tiling WM
In computing, a tiling window manager is a window manager with an organization of the screen into mutually non-overlapping frames, as opposed to the more popular approach of coordinate-based stacking of overlapping objects (windows) that tries to fully emulate the desktop metaphor.
— Wikipedia: https://en.wikipedia.org/wiki/Tiling_window_manager
My experience with tiling WMs started with Awesome, however it was a little bit difficult (as you need to learn lua scripts, and back then my knowledge of lua wasn’t too good). Along with my habits (Before I used gnome, kde, lxde and openbox mostly) this was bad choice (learning lua scripts and change perspective from windows to tiles). I3 on the other hand it’s quite simple to extend and adopt to tiles without swearing 🙂 This one deserves its own post (soon!).
Why using i3 boost productivity? First of all – distraction free. Tiles really helps to keep on screen only things that you really need at the moment. With possibility to auto-assigning particular applications to selected workspace you can provide yourself workspace which help you to be more productive. On top of that there is possibility to create your own modes. Watch screencast of i3 window manager:
TIP: Change default switch focus bindings to more vim-like approach:
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
4. Z plugin for ZSH
I’ve already mentioned ZSH. However, this one deserves its own place in my top 5, because its very simple, yet very powerful. Z is a plugin that helps you to move around within directories- it tries to remember most recent and most often used directories and help you moving to them using just part of its name. Since I have discovered it I barely use cd command! Imagine that I work on completable future examples for blog. I can use command like this for that:
╰─➤ z comple
Is there more?
YES! There is a lot of small tools which can help you with your performance. However most of them are very case specific (like wrk2, httpie or retrospective) so their usefulness is strongly related to particular use case.
Do you have any beloved tools? If so, please share them in comments!