سؤال

كيف تقوم بمسح شاشة وحدة تحكم IRB؟

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

المحلول

على ماك أو إس إكس أو لينكس يمكنك استخدام كنترول + ل لمسح إيرب شاشة.

نصائح أخرى

رمي هذا في الداخل %userprofile%\.irbrc وأنت جيد

def cls
  system('cls')
end

من IRB شاشة واضحة على النوافذ.

على صناديق * لا شىء

`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

أعتقد أن هذا سيعمل بشكل أفضل.

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