큰 파일에서 vi를 사용하면 어떻게됩니까? 보았습니다. 이로 인해 / var /

우리는 지시받지 않았지만 동료가 vi를 사용하여 큰 텍스트 파일 (server.log 3.5GB)을 보았습니다. 이로 인해 / var / tmp가 채워져 서버에서 일부 문제가 발생했습니다.

이 원인은 무엇입니까? 큰 파일에 vi를 사용하지 않아야하는 이유는 무엇입니까?



답변

vi 편집 버퍼의 기본 디렉토리 (/ var / tmp)에는 vi 가 버퍼 조작에 추가 행을 사용 하므로 작업중인 파일 크기의 약 2 배에 해당하는 공간이 필요합니다 .

/ var / tmp 디렉토리에 편집 버퍼를위한 충분한 공간이없는 경우 (예를 들어, 큰 파일로 작업 중이거나 시스템 공간이 부족한 경우)

때때로 당신은 얻을 수 있습니다, 당신은 이와 같은 다음과 같은 오류 메시지를 받게됩니다

Not enough space in /var/tmp.

http://kb.iu.edu/data/akqv.html 에서이 문제를 해결하는 방법에 대해 읽을 수 있습니다.


답변

Vim은 대용량 파일 용으로 설계되지 않았습니다. 그것은 사용자 경험을 크게 늦추는 특정 기능을 가지고 있습니다. 예를 들어, 파일을 메모리에로드하여 기본적으로 메모리 크기보다 작은 파일을 편집하도록 제한합니다. 또한 구문 강조, 스왑 파일 및 실행 취소와 같은 기능은 큰 파일에서 매우 비효율적이며 속도가 훨씬 느려집니다. 또 다른 문제는 vim너무 긴 줄 을 기대하지 않는다는 것입니다. 파일에 줄 바꿈 문자가 거의없는 경우vim 가 없는 은 사용할 수 없게됩니다.

이미 말했듯이 vim-largefile 과 같은 플러그인이있어 큰 파일에서 특정 설정을보다 효율적으로 변경하지만 결국 vim에는 결코 스냅 할 수 없습니다 당신이 그것을 여러 기브을 던질 때.

결론은 vim큰 파일 에는 사용하지 마십시오 . 큰 파일을 보려면 (편집과 대조적으로)을 사용하십시오 less. 패턴을 검색하려면 슬래시를 사용하여 패턴 검색을 시작하십시오.

/<pattern>  # forward search
?<pattern>  # backward search

출력을 필터링하려면 앰퍼샌드를 사용하십시오.

&<pattern>

그런 다음을 사용하여 연속 출력을 시작하십시오 shift-f. 를 사용하여 연속 출력 디스플레이를 종료하고 ctrl-c필터 패턴을 세분화 또는 취소하거나 검색을 시작할 수 있습니다.

와 같은 도구를 사용하여 큰 파일을 편집하려면 sed효율적이고이 목적을 위해 설계되었습니다.