Как очистить консоль 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

3
да, это не работает Должен сделать system('clear')или Ctrl+L
Коннор Лич

system 'clear'работал для меня, но я получил: command not found => false
эхо

1
Для этого вы можете добавить псевдоним, такой как clearваш файл pryrc. Спасибо за обмен
Джеймс Кляйн


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) строка ввода, начинающаяся с a, .будет перенаправлена ​​в командную оболочку. Что означает в Mac & Linux, мы можем использовать:

. clear

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

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


Я только что попробовал это, используя raw irb под Ruby 2.0.0p481 на Windows, и это не работает.
Джон Топли

Да. Кажется, это не работает в Windows. Но это, безусловно, работает в Mac и Linux.
Чандреш Пант

Мне нравится этот ответ лучше всего. Вам не нужно ничего менять, и это просто обстрел. Просто запомнить тоже. Кстати, . clsдолжно работать на Windows.
Эрик Боэс

Интересно, какая команда будет работать с tmux. Я думаю, что Ctrl + L - это то, что указано вwayway3 ниже.
Пабло



8

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

или

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


Работал для Mac OS X.11.1 в приложении «Терминал»
Патрик

@ 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')

Сделал трюк для меня в 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


1

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

1.9.3-p125 :151 >   system 'reset'

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


упростить его , используя обратные галочки: `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.


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.

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


-3

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

s = `cls`
puts s

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


1
Это терпит неудачу: Вы получаете этот irb (основной): 004: 0> cls=> "\ f"
Орион Эдвардс

@OrionEdwards @JesperE первая строка показала мне, "\f"что вы получили, а затем puts sвыдает это. Интересно, почему?
Счастливчик
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.