Question

vim has a number of ways to execute shell commands from within vim. One can jump to the shell and back to vim using shell, ctrl+z the current process and get back using fg. Selected/Current lines can be executed using !w bash.

However, all these approaches are helpful only for running one command. Once the command executes, the shell is process is killed.

I wanted to know if there is a way to keep executing snippets of code in the shell and have the shell remember functions/variables from the previous command (similar to copying snippets of code to a shell prompt) to debug code. For this the shell session would have to be persisted somehow.

I often run into cases where I need to execute a few functions on the shell and then test them out by calling them. The standard approach would be to copy paste them in a different shell and then execute them. How to do this from within vim?

Was it helpful?

Solution

If your Vim was build with Python support (most Unix builds are, Windows / Cygwin builds are not), you might want to have a look at the Conque Shell plugin, which allows to run a shell inside a Vim buffer.

Edit: Correction, apparently Vim 7.3 for Windows now also comes with Python support (and thus, Conque compatibility).

OTHER TIPS

You could start vim (not gvim) from a shell, then use <C-Z> to suspend vim. You return to the calling shell (not a sub-shell) and resume vim with fg. According to the docs, this works "On many Unix systems".

:help suspend
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top