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.
Top comments (4)
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!Another approach could be to use Tmux or Screen.
Yes, absolutely, there are many methods for running multiple processes in a single shell!