Tools of the Trade

This is note to self post. I am listing here, some of the tools that i use on a daily basis. Some of these tools are just awesome, like powerline. The picture below is the current state of my terminal window :-)

terminal

  • Vi Commands
    • :set paste
    • :%le -> indent everything to the left
    • r -> to replace a single character
    • * -> finds word under cursor
    • CTRL + p -> auto complete word
    • CTRL + V (visual block after which use normal vi commands like dd)
    • CTRL + V, Make Selection, SHIFT + i, press any character, press ESC -> this adds a character before each line in selection
    • Splitting
      • CTRL + w + s -> horizontal
      • CTRL + w + v -> vertical
    • CTRL + w + w -> move in split panes
  • Vi plugins
    • NERDTree -> file explorer in vi
    • TagList -> source code browser, useful to browse python functions
    • TaskList -> highlights TODOs
    • autoclose -> closes opened brackets, parenthesis etc
    • pythoncomplete/jedi-vim -> python code completions
    • syntastic -> syntax checking on save
  • Use Terminal on mac, and install tmux plugin
  • Use tmux over screen, find it easier to use, navigate, resize etc.Use to split single screen in multiple panes, and also keeping sessions alive.
    • Default control character is CTRL + B, change that in config.
    • CTRL + a + s -> horizontal
    • CTRL + a + v -> vertical
    • CTRL + +a + arrow keys -> move between panes
    • CTRL + a + w -> list and switch between windows
    • CTRL + a + Option + arrow keys -> increase/decrease pane height/width
    • CTRL + a + q -> show pane numbers
    • CTRL + a + c -> create new tmux window
    • CTRL + a + ] -> paste selection
  • Powerline - install new powerline (python based) to show git branches, status codes etc
  • Python
    • vitrtualenv
    • virtualenv wrapper
    • pyTest
    • grin (grep like search)
    • celery -> task queues
    • argh -> use dispatchcommands colored,
    • puts -> handy libs
    • yield -> for performance looping, also generator/iterator difference
    • requirements.txt, setup.py -> for module installation iPython
  • use docker
  • etcd -> key/value store
  • hubflow -> manage fetaure branches, release process
  • dashing -> create cool dashboards
  • SSH commands on hung ssh -> press enter + ~ + . to end the session immediately
    • on a ssh session -> enter + ~ + ? brings up a list of available commands