Terminal Workflow

This is a post about my workflow when editing files in the terminal.

When editing files quickly I usually resort to vim. It requires a lot of muscle memory but hey, one needs to train their reptile brain, right.

Tmux config

So I use tmux and vim so you need those two installed. My tmux config is really simple. I changed the leader key to ctrl+q for easy reach on my keyboard. I used to have ctrl+a but that conflicted with my habit to use that keyboard combo to go to the beginning of a command.

Create or edit ~/.tmux.conf and add this:

1set-option -g prefix C-q
2set -g mouse off
3
4set -g status-bg black
5set -g status-fg white

Workflow

First start tmux and then split the screen horizontally. Then decrease the size of the lower screen.

1tmux
2ctrl+q "
3ctrl+q  arrow down #hold ctrl+q while pressing arrow down key

You will end up with something like this:

Then in the upper half of the screen I open the files I want to work with

1vim -O file1 file2

Then you will end up with something like this:

As you can see you can edit files in the upper part of the screen and issue commands in the lower part.

Some basic commands

If you want to open another buffer (aka file in vim) you can do:

1ctrl+p #assuming you have that installed in vim, else use :e

Then you can just choose which buffer you want to display with :bd, :bn and so on. If you want to delete a buffer then just type :bd

Command What it does
:bn Display next buffer
:bp Display previous buffer
:bd Delete buffer
:ls List buffers

And some other useful navigation commands. It might take some practice because you need to memorize two sets of commands. But the reward is big, I promise.

Command What it does
u Undo
ctrl+r Redo
ctrl+ww Navigate to buffer
:vsplit Split vertically
ctrl + w _ Set height of split to max
ctrl + w | Set width of split to max

Here some tmux commands:

Command What it does
ctrl+q arrows Navigate windows (tmux)
ctrl+q % Split vertically (tmux)
ctrl+q " Split horizontally (tmux)
ctrl+q z Toggle window full screen (nice one!)