Як очистити консоль IRB?


Відповіді:


267

У Mac OS X або Linux ви можете використовувати Ctrl+, Lщоб очистити екран IRB .


8
Ctrl+Lтакож працює в gnome-терміналі, але щось більш програмне єsystem 'clear'
vol7ron

З zsh ctrl + L не працює, ctrl + K робить. (О, мій ZSH, щоб бути конкретним)
SidOfc

@SidneyLiebrand Я тестував на Oh My ZSH і працював лише Ctrl + L
плюралізм

2
@fanaugen На MacOS cmd+kочистить все в термінальному крані, якщо ви використовуєте tmux для розділення області зору, ctrl+Lзробить кращу роботу.
Fan Yer

59

Закинь це все, %userprofile%\.irbrcі ти добре

def cls
  system('cls')
end

З IRB прозорий екран на windows .


13
Слід уточнити, що це стосується лише Windows.
Бен Гофштейн

8
system('clear')також буде працювати на Mac. Слід зазначити, що це залишиться => trueу верхній частині консолі.
Майкл Дорст

1
@anthropomorphic `система ('ясно') буде працювати майже на кожній Unix / Unix-подібній системі.
enedil

@enedil Це абсолютно правда, проте багато людей не знають, що OS X - система, схожа на Unix.
Майкл Дорст

@anthropomorphic тому, що це не так . OS X сертифікована Unix компанією Open Group.
enedil

41

На * nix коробках

`clear`

на Windows

system 'cls' # works
`cls` # does not work

на OSX

system 'clear' # works
`clear` # does not work

3
так, це не працює. Доводиться робити system('clear')або Ctrl+L
Connor Leech

system 'clear'працював на мене, але я отримав: command not found => false
відлуння

1
Для цього можна додати псевдонім, наприклад, clearваш файл pryrc. Дякуємо за обмін
James Klein


16

На Ubuntu 11.10 система clearздебільшого очистить вікно irb. Ви отримуєте повернення=> True друковану вартість.

Великий безлад з некрасивого тексту

ruby-1.9.2-p290 :007 > system 'clear'

що ти отримуєш:

 => true 
ruby-1.9.2-p290 :007 > 

10

Щойно це я виявив сьогодні: У Pry (альтернатива IRB) рядок введення, який починається із .заповіту, буде перенаправлений до командної оболонки. Що означає у mac та Linux, ми можемо використовувати:

. clear

Оновлення: На жаль, це, здається, не працює в Windows.

Джерело: Pryrepl.org


Я просто спробував це, використовуючи raw irb під Ruby 2.0.0p481 у Windows, і він не працює.
Джон Топлі

Так. Здається, це не працює у вікнах. Але це, безумовно, працює в mac & Linux.
Чандреш Пант

Мені подобається ця відповідь найкраще. Вам не потрібно нічого змінювати, і це просто обстріл. Просте запам'ятовування теж. Btw, . clsмає працювати в Windows.
Eric Boehs

Цікаво, яка команда працювала б із tmux. Я думаю, що Ctrl + L є тим, що говорить theway_3 нижче.
Пабло



8

У Linux Mint 17 також можна використовувати Ctrl+Shift +L

або

Ctrl+, L щоб очистити екран IRB.


Працював для Mac OS X.11.1 у додатку Terminal
Патрік

@ thatway_3 - приємна відповідь: як ви надрукували інструкції з клавіатури на Stackoverflow?
BKSpurgeon


6

Спосіб: def clear_screen if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i system('cls') else system('clear') end end

Або в IRB ви можете використовувати system('clear')



3

Додайте такий метод до ~/.irbrc:

def clear
  conf.return_format = ""
  system('clear')
end

Cntrl-L або Cntrl-K працюю в звичайній консолі, але я використовую tmux і ті, хто забруднює екран всередині вікна tmux.

Conf.return_format = «» приймає нуль виключення, що повертається.


3

Користувачі 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

3

Я використовував це для виконуваних файлів:

def clear
    system("cls") || system("clear") || puts("\e[H\e[2J")
end

clear


1

Я прийшов сюди шукати спосіб скинути tty за допомогою irb, оскільки він не друкував нові рядки або не показував те, що я якось набрав, лише якийсь вихід.

1.9.3-p125 :151 >   system 'reset'

нарешті зробив для мене трюк!


спростити його , використовуючи зворотні галочки: `reset`.
Олов'яний чоловік

@ The Tin Man - беккетки не завжди діють як ви думаєте, але resetповинні працювати добре
vol7ron

Повернення завжди працює як я очікую, але тоді я використовую їх різними мовами роками та роками.
Олов'яний чоловік

Дійсно, іноді те, що нагадує backtick, справді може бути якоюсь іншою істотою UTF-8. Іноді я фіксую "текстові" документи з верхніми та нижніми лапками, які є насправді! = ANSI / ASCII "символом. Як у комерційних файлах SRT, де все пекло проривається.
Маркос,

1

Тут добре відповідей, але я часто віддаляю у вікно Linux з Mintty від Windows. Згадайте вище про використання .irbrc, але придумав це:

def cls
  puts "\ec\e[3J"
end

def clear
  puts "\e[H\e[2Js"
end

Це дає вам можливості як для "nix" чіткого поведінки, так і для Windows "cls" поведінки, що я часто вважаю кориснішим, якщо я дійсно хочу запустити буфер, а не просто прокручувати його з поля зору.

PS подібний варіант також працює в .bashrc:

alias cls='echo -e "\ec\e[3J"'

Якщо хтось зможе знайти спосіб насправді відобразити це на натискання клавіші, я хотів би почути це. Мені б дуже хотілося, щоб на osx було щось схоже на cmd-k, що працювало б у Mintty.


0

Для користувачів Windows:

Якщо ви створюєте ім'я файлу bat c.bat, вміст якого:

@echo off
cls

Тоді в IRB можна сказати:

system('c')

для очищення консолі. Я просто думав, що поділюсь, бо вважав це досить крутим. По суті, все на шляху доступне.


0
->(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, без зайвих порожніх рядків та матеріалів "=> nil". Тестується на 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?щоб перевірити, чи слід надрукувати результат. Я врятував метод, потім переглянув метод, який відновлює визначення, але повертає значення false, тому irb не повторюватиме результат.

По-друге, я надрукував кілька контрольних таблиць ANSI. \e[2Jочистить екран і \e[Hперемістить курсор у верхнє ліве положення екрана. \e[Dнадрукує пробіл, а потім перемістить курсор назад, тоді як це є вирішенням для чогось дивного в Windows.

Зрештою, це зовсім не практично. Просто посмішка ;)


-3

Оператор backtick фіксує вихід команди і повертає її

s = `cls`
puts s

працював би краще, я думаю.


1
Це не вдається: Ви отримуєте цей irb (main): 004: 0> cls=> "\ f"
Orion Edwards

@OrionEdwards @JesperE перший рядок показав мені "\f", що у вас є, а потім puts sвиводить це мені цікаво, чому?
Lucky
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.