I've recently switched to VIM as my full-time editor. I now have, more or less, two tools I use: the terminal, and the web browser.
One trick I've found essential to using VIM full-time is being able to pause it, run a bash command, then jump back into VIM.
Here's a concrete example:
- I create a new file in VIM
- I realize I named the file
file.css
when I meant to name isfile.scss
- I jump out of VIM, into a shell, and run
mv file.css file.scss
This leads into the topic of this article: how can we run multiple processes in one shell?
Jobs in Linux
This ends up being quite simple:
- To pause the current program (for example,
vim
):Ctrl+Z
- To list all paused programs:
jobs
- To jump back into a paused program:
fg <job_number>
(or justfg
if you have only one job) - To run a paused program in the background:
bg <job_number>
Hope you found this tip useful!
If you're interested in Linux, VIM, Django, Python, React/RN and just tech in general, follow me on dev.to or on Twitter @connorbode!
You can also find me on the web at matix.io.
Latest comments (4)
Another approach could be to use Tmux or Screen.
Yes, absolutely, there are many methods for running multiple processes in a single shell!
I use need tree to move and rename files. Running commands you can do :! and then a command to run straight from vim. Like ":! echo cool".
Also :term will open a terminal as a buffer if you have a vim 8 or neovim.
People love NerdTree! I'm trying to avoid it as I want to be proficient without having to install any plugins for VIM.
:! <cmd>
and:term
are excellent ideas, thank you!