parent
1120f97305
commit
e652756fdb
2 changed files with 136 additions and 0 deletions
@ -0,0 +1,69 @@ |
|||||||
|
# Vim Interaction # |
||||||
|
|
||||||
|
The plugin presents a function called `callvim` whose usage is: |
||||||
|
|
||||||
|
usage: callvim [-b cmd] [-a cmd] [file ... fileN] |
||||||
|
|
||||||
|
-b cmd Run this command in GVIM before editing the first file |
||||||
|
-a cmd Run this command in GVIM after editing the first file |
||||||
|
file The file to edit |
||||||
|
... fileN The other files to add to the argslist |
||||||
|
|
||||||
|
## Rationale ## |
||||||
|
|
||||||
|
The idea for this script is to give you some decent interaction with a running |
||||||
|
GVim session. Normally you'll be running around your filesystem doing any |
||||||
|
number of amazing things and you'll need to load some files into GVim for |
||||||
|
editing, inspecting, destruction, or other bits of mayhem. This script lets you |
||||||
|
do that. |
||||||
|
|
||||||
|
## Aliases ## |
||||||
|
|
||||||
|
There are a few aliases presented as well: |
||||||
|
|
||||||
|
* `v` A shorthand for `callvim` |
||||||
|
* `vvsp` Edits the passed in file but first makes a vertical split |
||||||
|
* `vhsp` Edits the passed in file but first makes a horizontal split |
||||||
|
|
||||||
|
## Examples ## |
||||||
|
|
||||||
|
This will load `/tmp/myfile.scala` into the running GVim session: |
||||||
|
|
||||||
|
> v /tmp/myfile.scala |
||||||
|
|
||||||
|
This will load it after first doing a vertical split: |
||||||
|
|
||||||
|
> vvsp /tmp/myfile.scala |
||||||
|
or |
||||||
|
> v -b':vsp' /tmp/myfile.scala |
||||||
|
|
||||||
|
This will load it after doing a horizontal split, then moving to the bottom of |
||||||
|
the file: |
||||||
|
|
||||||
|
> vhsp -aG /tmp/myfile.scala |
||||||
|
or |
||||||
|
> v -b':sp' -aG /tmp/myfile.scala |
||||||
|
|
||||||
|
This will load the file and then copy the first line to the end (Why you would |
||||||
|
ever want to do this... I dunno): |
||||||
|
|
||||||
|
> v -a':1t$' /tmp/myfile.scala |
||||||
|
|
||||||
|
And this will load all of the `*.txt` files into the args list: |
||||||
|
|
||||||
|
> v *.txt |
||||||
|
|
||||||
|
If you want to load files into areas that are already split, use one of the |
||||||
|
aliases for that: |
||||||
|
|
||||||
|
# Do a ':wincmd h' first |
||||||
|
> vh /tmp/myfile.scala |
||||||
|
|
||||||
|
# Do a ':wincmd j' first |
||||||
|
> vj /tmp/myfile.scala |
||||||
|
|
||||||
|
# Do a ':wincmd k' first |
||||||
|
> vk /tmp/myfile.scala |
||||||
|
|
||||||
|
# Do a ':wincmd l' first |
||||||
|
> vl /tmp/myfile.scala |
||||||
@ -0,0 +1,67 @@ |
|||||||
|
# |
||||||
|
# See README.md |
||||||
|
# |
||||||
|
# Derek Wyatt (derek@{myfirstnamemylastname}.org |
||||||
|
# |
||||||
|
|
||||||
|
function resolveFile |
||||||
|
{ |
||||||
|
if [ -f "$1" ]; then |
||||||
|
echo $(readlink -f "$1") |
||||||
|
else |
||||||
|
echo "$1" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
function callvim |
||||||
|
{ |
||||||
|
if [[ $# == 0 ]]; then |
||||||
|
cat <<EOH |
||||||
|
usage: callvim [-b cmd] [-a cmd] [file ... fileN] |
||||||
|
|
||||||
|
-b cmd Run this command in GVIM before editing the first file |
||||||
|
-a cmd Run this command in GVIM after editing the first file |
||||||
|
file The file to edit |
||||||
|
... fileN The other files to add to the argslist |
||||||
|
EOH |
||||||
|
return 0 |
||||||
|
fi |
||||||
|
|
||||||
|
local cmd="" |
||||||
|
local before="" |
||||||
|
local after="" |
||||||
|
while getopts ":b:a:" option |
||||||
|
do |
||||||
|
case $option in |
||||||
|
a) after="$OPTARG" |
||||||
|
;; |
||||||
|
b) before="$OPTARG" |
||||||
|
;; |
||||||
|
esac |
||||||
|
done |
||||||
|
shift $((OPTIND-1)) |
||||||
|
if [[ ${after#:} != $after && ${after%<cr>} == $after ]]; then |
||||||
|
after="$after<cr>" |
||||||
|
fi |
||||||
|
if [[ ${before#:} != $before && ${before%<cr>} == $before ]]; then |
||||||
|
before="$before<cr>" |
||||||
|
fi |
||||||
|
local files="" |
||||||
|
for f in $@ |
||||||
|
do |
||||||
|
files="$files $(resolveFile $f)" |
||||||
|
done |
||||||
|
if [[ -n $files ]]; then |
||||||
|
files=':args! '"$files<cr>" |
||||||
|
fi |
||||||
|
cmd="$before$files$after" |
||||||
|
gvim --remote-send "$cmd" |
||||||
|
} |
||||||
|
|
||||||
|
alias v=callvim |
||||||
|
alias vvsp="callvim -b':vsp'" |
||||||
|
alias vhsp="callvim -b':sp'" |
||||||
|
alias vk="callvim -b':wincmd k'" |
||||||
|
alias vj="callvim -b':wincmd j'" |
||||||
|
alias vl="callvim -b':wincmd l'" |
||||||
|
alias vh="callvim -b':wincmd h'" |
||||||
Loading…
Reference in new issue