3

If editing some script in vim, a file with .py or .sh extension, is it any build-in vim command that allows to run such file? I know it's a lot of IDE-like addons for VIM that allows to execute files vim edit, but is it possible without addons?

kubanczyk
  • 13,502
  • 5
  • 40
  • 55
grigoryvp
  • 3,415
  • 11
  • 38
  • 58

1 Answers1

9

I hope I'm not offending you by answering, that to run the current file (not buffer) you just

:!%

UPD: To run buffer to interpreter's standard input (without saving to a file first):

:w !/bin/sh

The latter can be also used with python, with perl -w, etc.

By the way, a super useful technique is to filter a buffer through external command:

1G!Ggrep -v unwanted_regex

All these are vi compatible.

kubanczyk
  • 13,502
  • 5
  • 40
  • 55
  • Thanks! I suppose vim don't know about file extension and #!/bin/python in order to run file via correct interpreter? – grigoryvp Jun 22 '09 at 09:34
  • Updated with additional tip. Of course, the "#!/xxx" header is parsed inside execve() system call (i.e. when you run an executable file), so it will definately work with the :!% way. But I don't know how to script vim to automatically execute the proper interpreter in the :w !interpreter way. This can be trivially done with external shell script. File extension does not matter in these cases at all. – kubanczyk Jun 22 '09 at 09:51
  • Fantastic idea! Simple too - one of those "Why didn't *I* think of that?" moments.... – Mei Jun 23 '09 at 18:22