개발/리눅스

vi에서 `Out of memory saving lines for undo - try using ed` 오류 해결 방법

Mr.Lee 하루 2025. 9. 17. 13:58

서버에 존재하는 파일을 vi로 열었더니
평소에는 잘 열리던데 이제 열리지 않았다.

Out of memory ~~ 어쩌구 메시지와 함께 편집을 할 수 없었다.
이유라도 들어보자.


vi에서 Out of memory saving lines for undo - try using ed 오류 해결 방법


오류 원인

vi 편집기에서 다음과 같은 메시지가 나타날 수 있다:

Out of memory saving lines for undo - try using ed

이는 편집 시 undo(되돌리기용 버퍼) 를 저장할 메모리를 확보하지 못했을 때 발생한다.
주로 다음과 같은 상황에서 발생한다:

  • 편집하려는 파일 크기가 매우 큰 경우 (수십~수백 MB 이상 로그, 덤프 파일 등)
  • 시스템 메모리가 부족한 경우 (임베디드 장비, Docker 컨테이너 등 제한된 환경)
  • vi 자체의 제한


해결 방법

1. vim 사용

vimvi보다 대용량 파일 처리 및 메모리 관리가 개선되어 있다.

vim filename

2. Undo 기능 끄기

vi 실행 후 즉시 undo 기록 저장을 끌 수 있다:

:set noundo

일부 vi 구현에는 해당 옵션이 없을 수 있다.


3. 대용량 파일에 적합한 도구 사용

  • 읽기 전용 열람
    less filename
  • 간단한 치환 작업
    sed -i 's/old/new/g' filename
  • 기본 편집기 사용
    ed filename
  • 가벼운 편집기
    nano filename

4. 시스템 메모리/스왑 확장

  • VM이나 Docker 환경에서는 메모리 혹은 스왑 공간을 늘려 해결 가능하다.


요약

  • 단순 열람: less
  • 편집 필요: vim 또는 nano
  • 아주 제한적인 환경: ed
  • 근본적 해결: 메모리/스왑 공간 확장

생각

  • vi를 고집할게 아니라 vim이나 nano 명령어를 따로 알아봐서 실행 해야겠다.