헤더를 유지하면서 큰 데이터 파일을 스크롤하는 방법 오버플로되는 큰 데이터 파일이 있다고 가정합니다. 헤더

화면에 세로 및 가로 방향으로 오버플로되는 큰 데이터 파일이 있다고 가정합니다. 헤더 행이 화면에 유지되는 동안 어떻게이 파일을 찾아 볼 수 있습니까?

현재는을 사용하여 less -S파일을 가로 및 세로로 멋지게 스크롤 할 수 있습니다. 그러나 아래로 스크롤하면 헤더 행이 사라집니다. 이것을 덜 사용하는 방법이 있습니까?

다른 방법은 vim로 분할 화면 모드를 사용하는 것 :set nowrap입니다. 그러나 이제 가로로 스크롤하면 상단 창이 같은 방식으로 스크롤되지 않습니다 ( :windo set scrollbind내가 아는 한 세로 스크롤에서만 작동합니다).



답변

vim에 익숙하다면 아마도 이것이 최선의 선택 일 것입니다. 다음을 변경하여 수평 스크롤 바인드 전용을 사용할 수 있습니다 'scrollopt'.

set scrollopt=hor

따라서와 함께 vim -u NONE원하는 동작을 얻을 수 있습니다.

:set scrollopt=hor
:set nowrap
:1split
:windo set scrollbind

건너 뛴 열 수와 가장자리 건너 뛰기 시작 간격을 각각 조정 'sidescroll'하고 'sidescrolloff'변경 하려고 할 수 있습니다 .


답변

스크롤 영역 설정을 지원하는 터미널에서 :

tailf() ( # args: <file> [<number-of-header-lines>]
  trap 'tput csr 0 "$((LINES-1))"' INT
  tput csr "$((1+${2-1}))" "$((LINES-1))"
  tput clear
  {
    head -n"${2-1}"
    printf "%${COLUMNS}s\n" "" | tr ' ' =
    tail -n "$((LINES-1-${2-1}))" -f
  } < "$1"
)

( 터미널의 크기에 따라 및 변수 를 설정 하는 쉘을 가정 zsh하거나 변수를 가정합니다 ).bash$COLUMNS$LINES


답변

이것을 시도하십시오 (설치해야합니다 multitail) :

multitail -du -t "$(head -n 1 filename)" filename

또는 한 줄보다 긴 헤더의 경우 :

multitail -wh 2 -l "head -n 2 filename" filename

파일 대신 명령 출력을 따르려면 다음을 수행하십시오.

multitail -wh 2 -l "command | head -n 2" -l command

또는 -t적절하게 사용하십시오 . unbuffer명령 출력이 즉시 나타나도록 사용해야 할 수도 있습니다 .

양식 -D의 상태 표시를 비활성화하는 데 사용할 수 있습니다 -wh(양식의 목적을 상실 할 -t수 있음).


답변

Thor의 대답은 세로 “scrollopt”를 비활성화하여 두 창을 세로로 스크롤하는 것을 언급하지 않았습니다. 그래서 나를 위해 완벽한 솔루션은 이것을 vim에 붙여 넣습니다.

:set scrollopt+=hor
:set scrollopt-=ver
:set nowrap
:1split
:windo set scrollbind


답변

이것은 내가 가진 한 tmux:

#!/bin/bash

tmux new-session -s main -n 'w1' -d
tmux send-keys -t main:w1.0 "tail -f <(head -n1 $1)" C-j
tmux split-window -v
tmux resize-pane -t 0 -y 2
tmux send-keys -t 1 "tail -n+2 $1|less -S" C-j
tmux attach -t main

그것은 창 분할에 대한 user80519의 답변 을 확장 한 것입니다 tmux. 다른 이름으로 저장 hless.sh하고 실행 가능하게 만들고 다음과 같이 사용하십시오.

hless.sh file


답변