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.csswhen 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 justfgif 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:termare excellent ideas, thank you!