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

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

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
189
0
60 739
21
Перейти к ответу Данный вопрос помечен как решенный

Ответы 21

Ответ принят как подходящий

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

Ctrl+L также работает в gnome-terminal, но что-то более программное - system 'clear'.

vol7ron 06.06.2013 19:54

С zsh ctrl + L не работает, ctrl + K работает. (О, мой ZSH, если быть точным)

SidOfc 20.07.2015 17:33

@SidneyLiebrand Я тестировал на Oh My ZSH, и работал только Ctrl + L

pluralism 18.03.2016 03:50

@fanaugen В MacOS cmd+k очистит все при касании терминала, если вы используете tmux для разделения визуальной области, ctrl+L будет работать лучше.

Fan Yer 19.05.2017 12:06

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

def cls
  system('cls')
end

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

Я должен уточнить, что это относится только к Windows.

Ben Hoffstein 22.09.2008 22:27

system('clear') также будет работать на Mac. Следует отметить, что при этом => true останется в верхней части консоли.

Michael Dorst 26.03.2013 09:49

@anthropomorphic `system ('clear') будет работать почти во всех Unix / Unix-подобных системах.

enedil 29.07.2014 17:47

@enedil Это абсолютно верно, однако многие люди не знают, что OS X - это Unix-подобная система.

Michael Dorst 30.07.2014 04:54

@anthropomorphic, потому что это нет. OS X сертифицирована Open Group для Unix.

enedil 30.07.2014 14:02

@BenHoffstein - Меня не волнует, что этот комментарий будет удален. СПАСИБО, ЧУВСТВИТЕЛЬ, СПАСИБО +=> 9,000. Это заняло слишком много времени, по сравнению с моим обычным опытом stackoverflow.

Rob Truxal 10.12.2017 04:55

@BenHoffstein Вы должны поместить это пояснение в текст сообщения. И, может быть, обратите внимание, что для Mac OS это system('clear')

Jemar Jones 07.12.2018 23:08

На ящиках * nix

`clear`

в Windows

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

на OSX

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

да, это не работает. Придется делать system('clear') или Ctrl + L

Connor Leech 25.02.2014 15:01

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

echo 04.12.2015 23:36

Для этого вы можете добавить псевдоним, например clear, в свой файл pryrc. Спасибо, что поделился

James Klein 18.12.2017 18:29

Оператор обратного апострофа фиксирует вывод команды и возвращает его.

s = `cls`
puts s

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

Это не удается: вы получаете этот irb (main): 004: 0> cls => "\ f"

Orion Edwards 23.09.2008 08:03

@OrionEdwards @JesperE первая строка показала мне "\f", который у вас есть, а затем puts s выводит этот . Интересно, почему?

Lucky 29.09.2014 15:59

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

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

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

что ты получаешь:

 => true 
ruby-1.9.2-p290 :007 > 

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

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

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

Это всего лишь результат работы `clear`, эквивалентный puts %x(/usr/bin/clear).

Todd A. Jacobs 19.10.2013 18:56

puts `clear`

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

Для пользователей Windows:

Если вы создаете файл bat с именем c.bat, содержимое которого:

@echo off
cls

Затем в IRB вы можете сказать:

system('c')

чтобы очистить консоль. Я просто подумал, что поделюсь, потому что подумал, что это довольно круто. По сути, все на пути доступно.

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

1.9.3-p125 :151 >   system 'reset'

наконец-то помогло мне!

упростить это с помощью обратных тиков: `reset`.

the Tin Man 27.10.2012 09:20

@ The Tin Man - обратные кавычки не всегда работают так, как вы думаете, но reset должен работать нормально

vol7ron 06.06.2013 19:57

Обратные кавычки всегда работают так, как я ожидал, но я уже много лет использую их на разных языках.

the Tin Man 06.06.2013 20:17

Действительно, иногда то, что напоминает обратную кавычку, действительно может быть каким-то другим существом UTF-8. Время от времени я исправляю "текстовые" документы с помощью верхних и нижних кавычек, которые на самом деле являются символом! = ANSI / ASCII. Как в коммерческих файлах SRT, где начинается ад.

Marcos 24.07.2014 12:30

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

->(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.

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

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

system('cls')

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

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

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

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

conf.return_format = "" обнуляет возвращаемое значение.

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

. clear

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

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

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

John Topley 17.07.2014 17:00

Да. В окнах вроде не работает. Но он, безусловно, работает в Mac и Linux.

Chandresh Pant 18.07.2014 12:06

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

Eric Boehs 22.07.2014 23:58

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

Pablo 16.02.2020 21:35

Пользователи 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

Я использовал это для исполняемых файлов:

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

clear

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

или же

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

Работал на Mac OS X.11.1 в приложении Терминал

Patrick 02.11.2015 08:01

@ thatway_3 - хороший ответ: как вы распечатали инструкции клавиатуры в Stackoverflow?

BKSpurgeon 09.03.2016 15:51

system 'cls' 

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

system 'clear'

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

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

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

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

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

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

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

P.S. аналогичный вариант работает и в .bashrc:

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

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

Другие вопросы по теме