All Projects → 1995eaton → vim-fifo

1995eaton / vim-fifo

Licence: other
An easy way to execute files through Vim and output their results to a shell fifo

Programming Languages

Vim Script
2826 projects

vim-fifo

###What is this? The purpose of the plugin is to save the time it takes to switch from Vim to another terminal window/pane and execute the script you've been editing. This is beneficial when you're in the workflow cycle best described as "modify script -> save file -> switch to other terminal -> run script -> switch back to vim -> repeat". vim-fifo slims down this cycle to: "modify script -> save file -> <C-m> -> repeat"

###Example usage example

###Installation

In addition to adding the plugin folder to your vim directory, just add these lines to your $SHELL's rc file:

VIM_FIFO_FILE="/tmp/vim.fifo"

function ctrl_c_trap() {
  rm $VIM_FIFO_FILE
  trap - INT
}

function vim_fifo() {
  mkfifo $VIM_FIFO_FILE
  trap ctrl_c_trap INT
  while [[ -e $VIM_FIFO_FILE ]]; do
    eval $(tail $VIM_FIFO_FILE)
  done
}
alias vimfifo="vim_fifo"

###Running vim-fifo

  • After you have the script in your rc file, run the vimfifo command in another terminal
  • Press <C-m> to execute the current file in vim

###Custom file types

  • You can define custom run scripts based on a certain file type with the g:vimfifo# + file extension variable.
  • To reference the current file in the script, use %s
  • Examples:
let g:vimfifo#myscript = "cat %s" "This will be translated to 'cat /file/im/working/on/myfile.myscript'
let g:vimfifo#cpp = "g++ -O2 -Wall -march=native %s -o output.vimfifo && ./output.vimfifo"
let g:vimfifo#py = "python %s"
let g:vimfifo#pytimed = "time python %s"
let g:vimfifo#ssh = "ssh $(head -n1 %s) -p 2222"

###Configuration

let g:fifo_file = "/tmp/vim.fifo" "Default fifo file

###Supported File Types

  • Python
  • Ruby
  • JavaScript (through node)
  • Perl
  • sh/zsh/bash
  • C (experimental)
  • C++ (experimental)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].