vim을 사용하여 로그 파일을 분석하고 형식은 다음과 같습니다.
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
대부분의 경우 나는 날짜와 시간을 신경 쓰지 않습니다. 그것들을 숨기고 이름과 LogText 열에 집중하고 싶습니다 (화면 영역을 저장하기 위해). 처음 세 개의 열은 항상 한 줄에서 처음 35 개의 문자를 차지하기 때문입니다. vim이 각 줄의 처음 35자를 표시하지 않는 방법이 있습니까?
vim을 사용하여 로그 파일을 분석하고 형식은 다음과 같습니다.
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
대부분의 경우 나는 날짜와 시간을 신경 쓰지 않습니다. 그것들을 숨기고 이름과 LogText 열에 집중하고 싶습니다 (화면 영역을 저장하기 위해). 처음 세 개의 열은 항상 한 줄에서 처음 35 개의 문자를 차지하기 때문입니다. vim이 각 줄의 처음 35자를 표시하지 않는 방법이 있습니까?
답변:
첫 글자를 숨기거나 제거하지 않고 보이지 않게 스크롤하는 방법에 대해 물었습니다. 실제로 숨기는 방법은 다음과 같습니다.
구문 강조 및 숨기기 기능 과 함께 matching 을 사용 하면 실제로 일치하는 문자를 줄 안에 표시 할 수 없습니다.
각 줄의 처음 25자를 숨기려면
:syn match Concealed '^.\{25\}' conceal
:set conceallevel=2
대신 구두점이있는 줄만 숨기려면 :
:syn match Concealed '^....-..-.. ..:..:..\..... ' conceal
숨기기를 해제하려면
:syn clear Concealed
:set conceallevel=0
정상적으로 보이는 모습 :
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
처음 두 명령을 실행 한 후 다음과 같이 나타납니다.
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
vim:help :syn-matchhelp :syn-concealhelp 'conceallevel'help 'concealcursor'
+conceal(mine is) 옵션 으로 컴파일되어 있어야한다고 생각 합니다. set concealcursor=nc커서 라인이 확장되지 않도록하는 것도 좋습니다 .
+conceal기능 옵션은 몇 년과 같이 표준입니다. 지금까지 더 잘 알려지지 않은 것이 슬프다. 정말 훌륭하고 유연합니다. 많은 새로운 옵션을 제공합니다 .
vim의 필터 기능을 사용하십시오 . 운영:
:%!cut -b36-
cut바이트 36 만 유지하면서 명령을 통해 버퍼의 내용을 실행합니다 . %전체 버퍼를 실행하고 그 내용을 출력으로 바꾸는 것을 의미합니다. 그런 다음 !필터 명령은 나머지 줄을 실행할 프로그램입니다. 버퍼를 맨 위에 저장하지 않으면 기본 파일을 수정하지 않습니다.
트리밍되지 않은 원본 버퍼를 다시 가져 오려면을 사용할 수 있습니다 ( :e실제 파일로 백업 된 경우).
%!cat %하려면? 이것은 훌륭하게 작동 map
나는 당신이 찾고있는 것과 더 일치한다고 생각 합니다. 수평 스크롤 입니다.
Z 가로 스크롤 명령 키 다음에 왼쪽 또는 오른쪽 화살표 키로 이동할 방향이 있습니다.
먼저 :set nowrap줄 바꿈을 비활성화합니다. 이어서 누르면 z, 35, →(35 개) 공간을 이동한다.
:set nosol
[Esc] z s
버퍼 나 파일을 수정하지 않고 기억하기 쉬운 솔루션이 있습니다. L보고자하는 파일 부분 의 첫 번째 문자 ( 예에서)에 커서를 놓고 입력
:set nowrap
zs
zs명령 의지 설정 VI 그래서 화면의 첫 번째 열에서 커서가 나타납니다와 문자가. :set nosol구성 파일을 입력하지 않았는지 확인하십시오 .
이 g$명령은 커서를 마지막으로 보이는 열로 이동합니다.
이 g0명령은 커서를 L을 포함하는 첫 번째 보이는 열로 다시 이동합니다.
어떤 키라도 커서를 보이는 열에서 왼쪽이나 오른쪽으로 움직이면 보이는 창이 이동합니다.
g0명령은 커서를 첫 번째 보이는 열로 이동시킵니다
cut -c36- logfile > logfile_with_first_35_chars_missing한 다음 검토 할 수 있습니다 .