Как очистить экран консоли IRB?
Как очистить экран консоли IRB?
Ответы:
В Mac OS X или Linux вы можете использовать Ctrl+ Lдля очистки экрана IRB .
cmd+k
очистит все внутри касания терминала, если вы используете tmux для разделения области визуальной области, ctrl+L
это сделает лучше.
Брось это внутрь %userprofile%\.irbrc
и все хорошо
def cls
system('cls')
end
system('clear')
также будет работать на Mac. Следует отметить, что это оставит => true
в верхней части консоли.
На * nix ящиках
`clear`
в Windows
system 'cls' # works
`cls` # does not work
на OSX
system 'clear' # works
`clear` # does not work
system('clear')
или Ctrl
+L
system 'clear'
работал для меня, но я получил: command not found => false
clear
ваш файл pryrc. Спасибо за обмен
Command+ Kв macOS отлично работает.
В Ubuntu 11.10 система в clear
основном очищает окно irb. Вы получаете возвращаемое => True
значение напечатано.
Большой беспорядок уродливого текста
ruby-1.9.2-p290 :007 > system 'clear'
что ты получишь:
=> true
ruby-1.9.2-p290 :007 >
Только что обнаружил это сегодня: в Pry (альтернатива IRB) строка ввода, начинающаяся с a, .
будет перенаправлена в командную оболочку. Что означает в Mac & Linux, мы можем использовать:
. clear
Обновление: К сожалению, это не похоже на работу в Windows.
Источник: Pryrepl.org
. cls
должно работать на Windows.
Чтобы очистить экран, просто сделайте:
puts "\e[H\e[2J"
PS Это было проверено на Linux.
`clear`
, и эквивалентно puts %x(/usr/bin/clear)
.
system 'clear'
Должен работать и для рельсов 4.0
На Linux Mint 17 также вы можете использовать Ctrl+ Shift+L
или
Ctrl+ L очистить экран IRB.
puts `clear`
Очищает экран, а затем возвращает => nil
Проверенное на Mac OSX 10.6 Terminal и iTerm2.
Метод:
def clear_screen
if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
system('cls')
else
system('clear')
end
end
Или в IRB вы можете использовать system('clear')
Пользователи 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
Я пришел сюда в поисках способа сброса tty с помощью irb, поскольку он не печатал переводы строки и не отображал то, что я набрал, а только вывод.
1.9.3-p125 :151 > system 'reset'
наконец сделал свое дело для меня!
`reset`
.
reset
должны работать нормально
Тонны хороших ответов здесь, но я часто удаленно в окно 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.
->(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.
В конце концов это вообще не практично. Просто улыбнись ;)
Оператор backtick захватывает выходные данные команды и возвращает их
s = `cls`
puts s
будет работать лучше, я думаю.
cls
=> "\ f"
"\f"
что вы получили, а затем puts s
выдает это. ♀
Интересно, почему?
Ctrl+L
также работает в gnome-терминал, но что-то более программируемоеsystem 'clear'