1. 버퍼 및 탭 간에 어떠한 차이점이 있는 지 궁금합니다.
저의 실질적인 이해는 하기와 같습니다. 제가 올바르게 이해하고 있는 지 궁금합니다.
버퍼 - vim에서 읽어 들인 모든 화일의 리스트 (메모리적재)
탭 - vim 화면에서 편집 가능하도록 TAB으로 열린 상태
윈도우 - Tmux의 pane과 유사하나, 탭이 (윈도우)화면에 여러개 보일 수 있도록 된 상태
구체적으로는 실행적인 탭을 닫아도, 버퍼는 그대로 유지 되는데 이러한 유용한 경우가 궁금합니다.
간단한 추측은 대용량 화일 읽을 경우, 로딩 시간 단축 정도 일 거 같긴한데. 다른 이유가 있는 지 궁금합니다.
2. 실제로 해당 사용 용도가 궁금하기는 합니다.
버퍼 / 탭 / 윈도우를 굳이 구분해서, 실제로 사용하는 use-case 가 궁금하긴 합니다.
해당 버퍼의 내용과 해당 버퍼를 사용하는 윈도우들의 내용이 모두 동일하면, 편집시에 자동으로 싱크되는 것으로 파악 됩니다.
=> 그렇다면 왜 굳이 동일한 내역을 보여주는 윈도우가 필요한지 궁금합니다.
특정 작업에는 나름 매우 효율적일 거 같긴 한데, 좀 더 실질적인 활용 방법이 궁금하여 문의드립니다.
아시는 분의 조언 부탁 드려 봅니다.
감사합니다.
제 이맥스 기준으로는 탭을 그냥 버퍼 쓰는 것처럼 쓰긴 합니다...
윈도우는 탭그룹 정도로 생각하고, 가상 데스크톱 쓰는 것처럼 작업/프로젝트 단위로 쓰면 좋아요.
vi는 1976년, 40년도 전에 나왔고, 60년대 있었던 ed를 개선하기 위해 나온 녀석입니다.
리눅스가 1991년에 나온 거 생각하면 엄청나게 오래 전 물건인 만큼 당시 프로그래밍 환경에 대해 이해해야합니다.
단적인 예로 보면 vim (를 포함한 대다수 터미널 프로그램들)을 보면 ctrl 키 조합만 있지 alt키, 시작키를 이용한 단축키 조합이 거의 없는걸 알 수 있는데, 당시에는 alt키,시작키가 키보드에 없었기 때문이죠.
우선 vim에서 해당 개념들을 공식문서에서 볼 수 있습니다: https://vimhelp.org/windows.txt.html#windows.txt
Summary:
A buffer is the in-memory text of a file.
A window is a viewport on a buffer.
A tab page is a collection of windows.
버퍼는 님이 생각하시는게 맞고,
윈도우는 버퍼 하나를 골라서 보여주는 역할을 하고 (님이 생각하시는 탭의 개념과 비슷합니다)
탭페이지는 ("탭"이 아닙니다) 여러개의 윈도우를 모아놓은 걸 말합니다. 여러개의 윈도우를 이름을 붙여서 (이걸 소위 "탭"이라고 불리죠) 화면 한곳에 몰아놓은 거죠.
윈도우와 탭페이지 용어가 님이 생각하시는 것과 정반대입니다. 거기다가 vim에서는 별도의 "탭"이라는 개념을 구분하지 없고, 단지 화면 바깥으로 치운 윈도우가 소위 "탭"처럼 보일 뿐입니다. 버퍼와 윈도우 라는 개념밖에 없어요. 참고로 탭페이지는 vim 버전 7, 2006년에 처음 도입된 최신기능(?!)이죠.
당시 vi과 vim의 발전역사를 상상해봅시다. 뇌피셜이지만 이해는 되도록 정리해볼게요.
1. 40년 전 쯤 처음에는 vi은 한마디로 "버퍼 조작기"이겠죠. 여러개의 파일 편집하기 편하게 버퍼라는 개념을 도입했는데, 윈도우는 딱 하나뿐이였겠죠. 그 하나뿐인 윈도우에서 버퍼들 중 하나를 고르고 버퍼를 조작하는 방식이겠죠.
2. 시간이 지나면서 터미널 화면도 커졌고 하니 화면을 가로/세로 분할해서 한 화면에 윈도우를 여러개 띄울 수 있게 vim을 업그래이드 했겠죠. 여전히 각각 윈도우는 버퍼들 중 하나를 골라서 띄워주는 역할이고요.
3. 그러다가 수많은 윈도우를 관리하게 됐는데, 잠시 보고싶지 않은 윈도우를 치우고 관리할 수 있도록 탭페이지라는 기능을 2006년에 추가했겠죠. https://vimhelp.org/version7.txt.html#new-tab-pages
당시에는 이름난 프로그래머가 주도해서 미래 환경까지 고려하면서 한번에 완성된 프로그램을 설계하지 않았습니다. 소위 "해커"라고 불리는 사람들이 자기가 편할거라고 생각하는 기능들을 원래 있는 프로그램에 덕지덕지 추가하는 방식이었죠. vi/vim도 40년 동안 그렇게 발전해온거고요.
GUI기반 텍스트에디터가 훨씬 더 흔한 요즘에는 이제와서 vim같은걸 보면 "버퍼랑 탭 기능은 왜 구분해놓지??" 같은 생각이 들고, 굳이 이유나 use-case를 대라고 하면 이해시키기 힘든게 많습니다. 그런데 당시 컴퓨터 환경과 발전역사를 상상해보면 충분히 자연스러운 결정들이라고 생각합니다.