سؤال
كيف تقوم بمسح شاشة وحدة تحكم IRB؟
المحلول
على ماك أو إس إكس أو لينكس يمكنك استخدام كنترول + ل لمسح إيرب شاشة.
نصائح أخرى
رمي هذا في الداخل %userprofile%\.irbrc
وأنت جيد
def cls
system('cls')
end
على صناديق * لا شىء
`clear`
على ويندوز
system 'cls' # works
`cls` # does not work
على أو إس إكس
system 'clear' # works
`clear` # does not work
على نظام أوبونتو 11.10 clear
سيؤدي في الغالب إلى مسح نافذة irb.تحصل على عائد => True
القيمة المطبوعة.
فوضى كبيرة من النص القبيح
ruby-1.9.2-p290 :007 > system 'clear'
ما تحصل عليه:
=> true
ruby-1.9.2-p290 :007 >
يأمر + ك في ماك يعمل بشكل رائع.
اكتشفت هذا للتو اليوم:في Pry (بديل IRB)، يبدأ سطر الإدخال بـ a .
سيتم إرسالها إلى قذيفة الأوامر.مما يعني أنه في نظامي التشغيل Mac وLinux، يمكننا استخدام:
. clear
تحديث:لسوء الحظ، يبدو أنه لا يعمل على نظام التشغيل Windows.
مصدر: Pryrepl.org
لمسح الشاشة فقط قم بما يلي:
puts "\e[H\e[2J"
ملاحظة.تم اختبار هذا على نظام Linux.
system 'clear'
يجب أن تعمل مع Rails 4.0 أيضًا
puts `clear`
يمسح الشاشة ثم يعود => nil
تم الاختبار على نظام التشغيل Mac OSX 10.6 Terminal وiTerm2.
على Linux Mint 17 يمكنك أيضًا استخدامه كنترول + يحول + ل
أو
كنترول + للمسح شاشة IRB.
في نظام التشغيل Windows، باستخدام Rails 4،
system('cls')
عملت بالنسبة لي
أضف الطريقة التالية إلى ~/.irbrc
:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L
أو Cntrl-K
أعمل في وحدة تحكم عادية ولكني أستخدم tmux وهذا يؤدي إلى إفساد الشاشة داخل نافذة tmux.
ال conf.return_format = "" يأخذ الصفر من القيمة المرجعة.
يحاول مستخدمو Windows ببساطة،
system 'cls'
أو
system('cls')
يبدو مثل هذا في نافذة IRB،
irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')
هل الحيلة بالنسبة لي في روبي 1.9.3.لكن الأوامر التالية لم تنجح وعادت => nil
,
system('clear')
system 'clear'
system `cls` #using the backquotes below ESC Key in windows
لقد استخدمت هذا للملفات القابلة للتنفيذ:
def clear
system("cls") || system("clear") || puts("\e[H\e[2J")
end
clear
طريقة:def clear_screen
if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
system('cls')
else
system('clear')
end
end
أو في IRB يمكنك استخدامها system('clear')
system 'cls'
يعمل معي على نظام التشغيل Windows، مع Ruby 2.2.0 و Rails 4.0
هناك الكثير من الإجابات الجيدة هنا، لكنني غالبًا ما أتصل عن بعد بصندوق Linux مع Mintty من windows.مجد لما ورد أعلاه حول استخدام .irbrc، ولكن توصلت إلى هذا:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
يمنحك هذا خيارات لكل من سلوك *nix 'clear' وسلوك Windows 'cls'، والذي غالبًا ما أجده أكثر فائدة إذا كنت أرغب حقًا في تدمير المخزن المؤقت بدلاً من مجرد تمريره بعيدًا عن الأنظار.
ملاحظة.يعمل متغير مماثل أيضًا في .bashrc:
alias cls='echo -e "\ec\e[3J"'
إذا تمكن أي شخص من العثور على طريقة لربط ذلك بضغطة مفتاح، فأنا أحب أن أسمع ذلك.أرغب حقًا في الحصول على شيء مشابه لـ cmd-k على OSX والذي سيعمل في Mintty.
لقد جئت إلى هنا بحثًا عن طريقة لإعادة تعيين tty باستخدام irb، نظرًا لأنه لم يكن يطبع أسطرًا جديدة أو يعرض ما كتبته بطريقة ما، بل فقط بعض المخرجات.
1.9.3-p125 :151 > system 'reset'
وأخيرا فعلت الحيلة بالنسبة لي!
لمستخدمي ويندوز:
إذا قمت بإنشاء ملف بات اسمه c.bat ومحتوياته هي:
@echo off
cls
ثم، في IRB، يمكنك أن تقول:
system('c')
لمسح وحدة التحكم.اعتقدت أنني سأشارك لأنني اعتقدت أن ذلك كان رائعًا.يمكن الوصول إلى أي شيء في المسار بشكل أساسي.
->(a,b,c){x=a.method(b);a.send(c,b){send c,b,&x;false};print"\e[2J\e[H \e[D"}[irb_context,:echo?,:define_singleton_method]
سيؤدي هذا إلى مسح شاشة IRB الخاصة بك بالكامل، مع عدم وجود أسطر فارغة إضافية وأشياء "=> لا شيء".تم اختباره على نظام التشغيل Linux/Windows.
يمكن توسيع هذه الخطوط الفردية على النحو التالي:
lambda {
original_echo = irb_context.method(:echo?)
irb_context.send(:define_singleton_method, :echo?) {
send :define_singleton_method, :echo?, &original_echo
false
}
print "\e[2J\e[H \e[D"
}.call
هذا يستخدم الكثير من الحيل.
أولا، سوف يتصل IRB echo?
للتحقق مما إذا كان ينبغي طباعة النتيجة.لقد قمت بحفظ الطريقة، ثم أعدت تعريفها باستخدام طريقة تستعيد التعريف ولكنها تُرجع خطأ حتى لا يردد irb النتيجة.
ثانيًا، قمت بطباعة بعض أحرف التحكم ANSI. \e[2J
سوف تنظيف الشاشة و \e[H
سيحرك المؤشر إلى الموضع العلوي الأيسر من الشاشة. \e[D
سيطبع مسافة ثم يحرك المؤشر للخلف بينما يعد هذا حلاً بديلاً لشيء غريب على Windows.
أخيرًا، هذا نوع غير عملي على الإطلاق.فقط ابتسم ؛)
يلتقط عامل backtick مخرجات الأمر ويعيده
s = `cls`
puts s
أعتقد أن هذا سيعمل بشكل أفضل.