99

GitHub - gokcehan/vim-opex: vim operators to execute motions

 6 years ago
source link: https://github.com/gokcehan/vim-opex
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

vim-opex

Opex is a simple plugin that defines two custom operators to execute text objects (:h motion.txt). First execution operator executes the code and displays any output in messages (:h message.txt). Second appending operator executes the code and appends any output as a comment below the text object.

demo-screencast

Languages

Following languages are supported with their corresponding interfaces:

  • lua (:h if_lua.txt)
  • perl (:h if_perl.txt)
  • python (:h if_pyth.txt)
  • ruby (:h if_ruby.txt)
  • scheme (:h if_mzsch.txt)
  • tcl (:h if_tcl.txt)
  • sh (:h system())
  • vim (:h execute())

Opex is automatically loaded if you have the required feature enabled in vim (e.g. +lua for lua files). If you have installed vim from a repository, you are likely missing most of these features. Therefore, you may need to compile vim from source with corresponding features enabled at compile time.

Installation

Drop autoload/opex.vim to ~/.vim/autoload and any of the files under ftplugin to ~/.vim/ftplugin.

If you are using vim8 you can simply clone this repository as such (:h packages):

mkdir -p ~/.vim/pack/plugins/start
cd ~/.vim/pack/plugins/start
git clone https://github.com/gokcehan/vim-opex.git

If you are using another plugin manager you should know what to do.

Configuration

You can configure mappings for execution (default gx) and appending (default gz) as below:

nmap ge  <plug>(opex-execute)
vmap ge  <plug>(opex-execute)
nmap gee <plug>(opex-execute-line)

nmap ga  <plug>(opex-append)
vmap ga  <plug>(opex-append)
nmap gaa <plug>(opex-append-line)

If you want to disable opex for a specific filetype you can use the following:

let b:loaded_opex_lua = 1

You can change the value of commentstring option to configure output style:

autocmd Filetype lua setlocal commentstring=--[[%s]]

Known Issues

  • Any limitation on the builtin interpreter also applies to opex (e.g. gui, threading).
  • If you accidentally execute an infinite loop, you may need to manually kill the vim process.
  • If you crash the interpreter somehow, plugins that use the same interface may stop working until you restart vim.

License

Public domain.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK