Вопрос

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

Это было полезно?

Решение

На Mac OS X или Линукс вы можете использовать Ctrl + л очистить ИРБ экран.

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

Брось это внутрь %userprofile%\.irbrc и ты хороший

def cls
  system('cls')
end

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

На *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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top