Domanda

Ho una funzione vim predisporre, se posso evidenziare una riga di testo ed eseguire in clojure. Ecco la funzione:

 function! Clojure_execline()
     let cl = (getline(line(".")))
     // ...
     exec 'clojure -e "' . cl . '"'
 endfunction

Il problema di questo è che è lento a partire, sia perché genera una nuova sessione clojure ogni volta che l'eseguo, non posso chiamare una funzione mi sono imbattuto in precedenza. Idealmente, vorrei un repl nascosto per essere in esecuzione in cui ho potuto inviare input da vim e recuperare l'output da pure. Ho imparato a conoscere schermo gnu e ho pensato che mi potrebbe aiutare, ma non so come inviare l'input da una finestra dello schermo ad un altro.

Per chiarire il mio problema, prendere questa linea di clojure:

(defn add2 [x y] (+ x y))

Mi piacerebbe essere in grado di evidenziare questa linea in vim ed eseguire in un repl in esecuzione. Voglio essere in grado di chiamare la linea qui sotto e farla eseguire nello stesso repl:

(add2 4 5)

In seguito, mi piacerebbe essere in grado di ottenere l'output della funzione.

Quindi, in sostanza, la mia domanda è: come posso inviare input da una finestra dello schermo ad un altro?

È stato utile?

Soluzione 3

Trovato quello che stavo cercando. È possibile eseguire questo da un terminale per inviare una stringa direttamente al stdin di una finestra dello schermo:

$ screen -X stuff "ls -l\015" # \015 sends a carrige return.

Altri suggerimenti

Il suggerimento di Jake McCrary è un buon compromesso. Ci sono anche un paio di altri script disponibili, probabilmente sulla base stessa idea:

VimClojure , che dice che fa " repl in un buffer di vim "

e

slimv , supporta in modo specifico Clojure

e

Gorilla , credo VimClojure, sopra , si basa su Gorilla

Non so se VimClojure realmente fa ciò che si vuole, rimandando Risultato da schermo per tamponare in Vim. Un modo per farlo, credo, sarebbe quella di qualcosa finagle utilizzando la funzionalità client-server di Vim, possibile con la bandiera --remote-send. Vedi:

:h client-server
:h --remote-send

Non ho una risposta esatta, ma forse vale la pena dare un'occhiata a slime.vim e vedere se qualcosa si può imparare da esso.

blog post su di esso

script alla vim.org

Si potrebbe anche essere interessati a Conque http://code.google.com/p/conque/

Io lo uso per Scala

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top