Как очистить консоль IRB?

Ответы:

267

В Mac OS X или Linux вы можете использовать Ctrl+ Lдля очистки экрана IRB .

Джон Топли
источник
8
Ctrl+Lтакже работает в gnome-терминал, но что-то более программируемоеsystem 'clear'
vol7ron
С zsh ctrl + L не работает, ctrl + K работает. (Oh My ZSH, чтобы быть конкретным)
SidOfc
@SidneyLiebrand Я тестировал на Oh My ZSH и работал только Ctrl + L
плюрализм
2
@fanaugen В MacOS cmd+kочистит все внутри касания терминала, если вы используете tmux для разделения области визуальной области, ctrl+Lэто сделает лучше.
Фан Йер
59

Брось это внутрь %userprofile%\.irbrcи все хорошо

def cls
  system('cls')
end

Из IRB очистить экран на окнах .

Бен Хоффштейн
источник
13
Я должен уточнить, что это относится только к Windows.
Бен Хоффштейн
8
system('clear')также будет работать на Mac. Следует отметить, что это оставит => trueв верхней части консоли.
Майкл Дорст
1
@anthropomorphic `system ('clear') будет работать практически на каждой 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
AShelly
источник
3
да, это не работает Должен сделать system('clear')или Ctrl+L
Коннор Лич
system 'clear'работал для меня, но я получил: command not found => false
эхо
1
Для этого вы можете добавить псевдоним, такой как clearваш файл pryrc. Спасибо за обмен
Джеймс Кляйн
21

Command+ Kв macOS отлично работает.

user1323136
источник
16

В Ubuntu 11.10 система в clearосновном очищает окно irb. Вы получаете возвращаемое => Trueзначение напечатано.

Большой беспорядок уродливого текста

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

что ты получишь:

 => true 
ruby-1.9.2-p290 :007 > 
TW Scannell
источник
10

Только что обнаружил это сегодня: в Pry (альтернатива IRB) строка ввода, начинающаяся с a, .будет перенаправлена ​​в командную оболочку. Что означает в Mac & Linux, мы можем использовать:

. clear

Обновление: К сожалению, это не похоже на работу в Windows.

Источник: Pryrepl.org

Чандреш Пант
источник
Я только что попробовал это, используя raw irb под Ruby 2.0.0p481 на Windows, и это не работает.
Джон Топли
Да. Кажется, это не работает в Windows. Но это, безусловно, работает в Mac и Linux.
Чандреш Пант
Мне нравится этот ответ лучше всего. Вам не нужно ничего менять, и это просто обстрел. Просто запомнить тоже. Кстати, . clsдолжно работать на Windows.
Эрик Боэс
Интересно, какая команда будет работать с tmux. Я думаю, что Ctrl + L - это то, что указано вwayway3 ниже.
Пабло
9

Чтобы очистить экран, просто сделайте:

puts "\e[H\e[2J"

PS Это было проверено на Linux.

Суджит Кумар
источник
Это просто вывод из `clear`, и эквивалентно puts %x(/usr/bin/clear).
Тодд А. Джейкобс
9
system 'clear'

Должен работать и для рельсов 4.0

Арвинд Сингх
источник
8

На Linux Mint 17 также вы можете использовать Ctrl+ Shift+L

или

Ctrl+ L очистить экран IRB.

thatway_3
источник
Работал для Mac OS X.11.1 в приложении «Терминал»
Патрик
@ thatway_3 - хороший ответ: как вы печатали инструкции клавиатуры в Stackoverflow?
BKSpurgeon
6
puts `clear`

Очищает экран, а затем возвращает => nilПроверенное на Mac OSX 10.6 Terminal и iTerm2.

Лукас Рокет Гаттерман
источник
6

Метод: def clear_screen if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i system('cls') else system('clear') end end

Или в IRB вы можете использовать system('clear')

Стивен Росс
источник
5

В Windows, используя Rails 4,

system('cls')

работал на меня

Глина Н
источник
3

Добавьте следующий метод к ~/.irbrc:

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

Cntrl-Lили Cntrl-K работать в обычной консоли, но я использую tmux, и они портят экран внутри окна tmux.

Conf.return_format = «» принимает ноль выключения возвращаемого значения.

TheFed
источник
3

Пользователи Windows просто пытаются,

system 'cls'

ИЛИ

system('cls')

Похоже, это в окне IRB,

irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')

Сделал трюк для меня в ruby ​​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
avinashbot
источник
2
system 'cls' 

У меня работает в Windows, с Ruby 2.2.0 и rails 4.0

saadibabar
источник
Вы имеете в виду Rails 4?
Отмена
1

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

1.9.3-p125 :151 >   system 'reset'

наконец сделал свое дело для меня!

Marcos
источник
упростить его , используя обратные галочки: `reset`.
Жестянщик
@ The Tin Man - галочки не всегда работают так, как вы думаете, но resetдолжны работать нормально
vol7ron
Обратные пометки всегда работают так, как я ожидаю, но потом я использую их на разных языках в течение многих лет.
Жестянщик
Действительно, иногда то, что напоминает обратную черту, действительно может быть каким-то другим существом UTF-8. Иногда я исправляю «текстовые» документы с верхними и нижними кавычками, которые на самом деле являются символом! = ANSI / ASCII ». Как и в коммерческих файлах SRT, где разворачивается весь ад.
Маркос,
1

Тонны хороших ответов здесь, но я часто удаленно в окно Linux с Mintty из окон. Престижность вышеупомянутого об использовании .irbrc, но придумала это:

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

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

Это дает вам опции как для «nix» «чистого» поведения, так и для «cls» поведения Windows, которое я часто нахожу более полезным, если я действительно хочу обнулить буфер, а не просто прокручивать его из поля зрения.

PS аналогичный вариант также работает в .bashrc:

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

Если бы кто-нибудь мог найти способ отобразить это на нажатие клавиши, я бы хотел услышать это. Мне бы очень хотелось иметь что-то похожее на cmd-k на OSX, которое будет работать в Mintty.

erich2k8
источник
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, без лишних пустых строк и «=> ноль». Проверено на 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.

В конце концов это вообще не практично. Просто улыбнись ;)

orzFly
источник
-3

Оператор backtick захватывает выходные данные команды и возвращает их

s = `cls`
puts s

будет работать лучше, я думаю.

JesperE
источник
1
Это терпит неудачу: Вы получаете этот irb (основной): 004: 0> cls=> "\ f"
Орион Эдвардс
@OrionEdwards @JesperE первая строка показала мне, "\f"что вы получили, а затем puts sвыдает это. Интересно, почему?
Счастливчик