0
맨 페이지에서 묻는 메시지가 마치 --more--
인 것처럼 Ruby에서이 작업을 수행 할 수 있습니까?긴 텍스트 블록을 한 번에 한 화면 씩 표시하려면 어떻게해야합니까?
"pretty_print"또는 "awesome_print"가있는 것일 수 있습니다. 아니면, 라 터미널 창 크기에 대한 받고 정보를 포함합니다 : 당신이 뭔가가 루비에 필요할 것으로 예상 여부 https://gist.github.com/acook/4190037
# via http://www.megasolutions.net/ruby/Getting-the-size-of-the-terminal-in-a-portable-way-26006.aspx
TIOCGWINSZ = 0x40087468
def get_winsize
str = [0, 0, 0, 0].pack('SSSS')
if STDIN.ioctl(TIOCGWINSZ, str) >= 0
rows, cols, xpixels, ypixels = str.unpack("SSSS")
p rows, cols, xpixels, ypixels
else
puts "Unable to get window size"
end
end
그래, 루비는 그렇게 굉장한 것처럼 보입니다. 그래서, 큰 텍스트 블록을 인쇄하여 (긴 맨 페이지와 같이) 프롬프트 당 한 화면의 텍스트 만 표시하도록하려면 텍스트는'$ stdout.winsize'를 사용하여 현재 콘솔 창 크기로 포맷됩니까? 내가''io/console ''을 요구할 때 irb에서'$ stdin.winsize'의 "잘못된 파일 기술자"를 얻지 만 stdout은 현재 크기를 표시합니다. –
업데이트를 참조하십시오. 문제를 제대로 이해했다면 내부 OS 명령을 사용해도 충분합니다. 그렇지 않다면, 페이지 매김을 구현해야합니다. – mudasobwa
우수한 단어 : 페이지 매김. 때로는 아이디어를 정확하게 설명하는 것이 많은 도움이됩니다! –