Как очистить консоль IRB?
Как очистить экран консоли IRB?
21 ответов
On * 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 >
только что обнаружил это сегодня: в Pry (альтернатива IRB) строка ввода, которая начинается с .
будет перенаправлен в командную оболочку. Это означает, что в mac и Linux мы можем использовать:
. clear
Update: к сожалению, он не работает в Windows.
источник:Pryrepl.org
пользователи 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
добавьте следующий метод к ~/.irbrc
:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L
или Cntrl-K
работа в обычной консоли, но я использую tmux и те беспорядок экран внутри окна tmux.
на conf.return_format = "" снимает ноль с возвращаемого значения.
я использовал это для исполняемых файлов:
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')
тонны хороших ответов здесь, но я часто удаляюсь в коробку linux с мятным из windows. Престижность выше об использовании .irbrc, но придумал это:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
это дает вам варианты как для поведения * nix "clear", так и для поведения Windows "cls", которое я часто нахожу более полезным, если я действительно хочу взорвать буфер, а не просто прокручивать его из поля зрения.
С. П. подобный вариант также работает .bashrc следующее:
alias cls='echo -e "\ec\e[3J"'
Если кто-то может найдите способ сопоставить это с нажатием клавиши, я бы хотел это услышать. Я бы очень хотел иметь что-то похожее на cmd-k на osx, которое будет работать в Mintty.
Я пришел сюда, ища способ сбросить tty с irb, так как он не печатал новые строки или показывал, что я набрал как-то, только некоторые выходные данные.
1.9.3-p125 :151 > system 'reset'
наконец-то сделал трюк для меня!
для пользователей windows:
Если вы создаете имя файла bat c.летучая мышь, содержимое которой:
@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.
наконец, это не совсем практично. Просто улыбнись ;)
оператор backtick захватывает выходные данные команды и возвращает ее
s = `cls`
puts s
будет работать лучше, я думаю.