سؤال

لديّ وظيفة VIM إعداد حيث يمكنني تسليط الضوء على سطر النص والتنفيذ في Clojure. ها هي الوظيفة:

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

المشكلة في ذلك هي أنه من البطيء البدء ولأنه يولد جلسة جديدة في كل مرة أقوم فيها بتشغيلها ، لا يمكنني استدعاء وظيفة قمت بتشغيلها مسبقًا. من الناحية المثالية ، أود أن يتم تشغيل Repling Hidden حيث يمكنني إرسال مدخلات من VIM واسترداد الإخراج من كذلك. لقد تعلمت عن شاشة GNU واعتقدت أنها يمكن أن تساعدني ، لكنني لا أعرف كيفية إرسال المدخلات من نافذة شاشة إلى أخرى.

لتوضيح مشكلتي ، خذ هذا الخط من clojure:

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

أود أن أكون قادرًا على تسليط الضوء على هذا الخط في VIM والتنفيذ في REPLE REPLE. أريد أن أكون قادرًا على استدعاء السطر أدناه وجعله ينفذ في نفس الاستبدال:

(add2 4 5)

بعد ذلك ، أود أن أكون قادرًا على الحصول على إخراج الوظيفة.

لذا ، في الأساس ، سؤالي هو ، كيف يمكنني إرسال إدخال من نافذة شاشة إلى أخرى؟

هل كانت مفيدة؟

المحلول 3

وجدت ما كنت أبحث عنه. يمكنك تنفيذ هذا من محطة لإرسال سلسلة مباشرة إلى stdin من نافذة الشاشة:

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

نصائح أخرى

اقتراح جيك ماكراري اقتراح جيد. هناك أيضًا بعض البرامج النصية الأخرى المتاحة ، ربما تستند إلى نفس الفكرة:

vimclojure, ، الذي يقول إنه "استبدال في عازلة VIM"

و

slimv, ، يدعم على وجه التحديد clojure

و

غوريلا, ، أعتقد أن vimclojure ، أعلاه ، يعتمد على الغوريلا

لا أعرف ما إذا كان vimclojure يقوم بالفعل بما تريد ، وإرسال النتيجة مرة أخرى من الشاشة إلى المخزن المؤقت في VIM. طريقة واحدة للقيام بذلك ، على ما أعتقد ، ستكون Finagle شيء باستخدام وظيفة خادم عميل VIM ، ممكن مع-العلم--send. نرى:

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

ليس لدي إجابة دقيقة ، ولكن قد يكون من المفيد إلقاء نظرة على الوحل.

منشور مدونة حول هذا الموضوع

السيناريو في vim.org

قد تكون مهتمًا أيضًا بـ Conque http://code.google.com/p/conque/

أنا أستخدمه لسكالا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top