Вопрос
Как очистить экран консоли IRB?
Решение
На Mac OS X или Линукс вы можете использовать Ctrl + л очистить ИРБ экран.
Другие советы
Брось это внутрь %userprofile%\.irbrc
и ты хороший
def cls
system('cls')
end
На *nix-боксах
`clear`
в Windows
system 'cls' # works
`cls` # does not work
на OSX
system 'clear' # works
`clear` # does not work
В системе Ubuntu 11.10 clear
в основном очистит окно irb.Вы получаете возврат => True
напечатанное значение.
Большой беспорядок из уродливого текста
ruby-1.9.2-p290 :007 > system 'clear'
что ты получишь:
=> true
ruby-1.9.2-p290 :007 >
Команда + К в macOS прекрасно работает.
Только сегодня обнаружил это:В Pry (альтернатива IRB) строка ввода, начинающаяся с .
будет перенаправлен в командную оболочку.Это означает, что в Mac и Linux мы можем использовать:
. clear
Обновлять:К сожалению, в Windows это не работает.
Источник: Pryrepl.org
Чтобы очистить экран, просто выполните:
puts "\e[H\e[2J"
P.S.Это было протестировано на Linux.
system 'clear'
Должно работать и для рельсов 4.0.
puts `clear`
Очищает экран, а затем возвращается => nil
Протестировано на терминале Mac OSX 10.6 и iTerm2.
В Linux Mint 17 вы также можете использовать Ctrl + Сдвиг + л
или
Ctrl + лчтобы очистить экран 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')
Мне помогло в 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
Метод: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 и рельсами 4.0.
Здесь масса хороших ответов, но я часто удаленно подключаюсь к Linux-системе с помощью Mintty из Windows.Престижность вышесказанного об использовании .irbrc, но получилось следующее:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
Это дает вам возможность использовать как поведение «clear» *nix, так и поведение Windows «cls», которое я часто нахожу более полезным, если я действительно хочу уничтожить буфер, а не просто прокрутить его из поля зрения.
P.S.аналогичный вариант работает и в .bashrc:
alias cls='echo -e "\ec\e[3J"'
Если бы кто-нибудь мог найти способ сопоставить это с нажатием клавиши, я бы хотел это услышать.Мне бы очень хотелось иметь что-то вроде cmd-k на OSX, которое работало бы в Mintty.
Я пришел сюда в поисках способа сбросить tty с помощью irb, поскольку он не печатал новые строки и не показывал то, что я каким-то образом набрал, а только некоторый вывод.
1.9.3-p125 :151 > system 'reset'
наконец-то сделал свое дело для меня!
Для пользователей Windows:
Если вы создадите файл bat с именем 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, без лишних пустых строк и символов «=> 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.
Наконец, это вообще непрактично.Просто улыбнись ;)
Оператор обратного кавычка фиксирует выходные данные команды и возвращает их.
s = `cls`
puts s
думаю, будет работать лучше.