11P by neo 31일전 | favorite | 댓글 3개
  • 모든 개발자는 자신만의 텍스트 편집기 여정을 가지고 있으며, 현재 사용하는 도구에 도달하는 과정을 겪음. 이러한 이야기들은 흥미롭고, 개발 도구와 그에 투입된 노력에 큰 감사를 표함
  • 이 글은 개발 도구에 관심 있는 사람들에게 자신의 여정을 공유하고, 새로운 도구를 실험해보도록 격려하고자 작성되었음

텍스트 편집기 여정의 시작

  • Atom을 처음 사용하며 HTML, CSS, Javascript의 기본을 배우기 시작
  • VSCode로 전환했으나, 당시 아내가 사진 편집을 위해 노트북을 사용해야 했고, 대신 사용한 맥북이 VSCode의 Electron 빌드로 인해 성능 저하를 겪음
  • 이때 우연히 Vim을 발견하고, 키보드 중심의 작업 흐름과 속도에 매료되어 Vim 학습을 시작
  • 초기에는 Vim RC를 수정하며 사용했으며, 이후 chris@machine의 영상을 통해 Neovim을 알게 됨
  • 수년간 Neovim을 사용하며 높은 생산성을 누림. 많은 시간을 들여 설정을 조정했으나, 결국 설정 변경이 거의 필요 없는 상태에 도달

변화

  • 하지만 시간이 지남에 따라 설정 파일을 계속 간소화해야 했고, 기본적인 기능을 유지하기 위해서도 많은 노력이 필요했음
  • 가끔 플러그인을 업데이트할 때마다 Neovim이 문제가 발생하며, 작업을 중단하고 문제를 해결하는 데 시간을 소비하게 됨. 이를 해결하기 위해 설정을 간소화하려 했으나, 기본적인 기능을 유지하기 위한 노력은 여전히 필요했음
  • 특히 큰 코드베이스에서 작업할 때 Neovim이 느려지고 화면이 멈추는 등 문제가 발생, 생산성에 지장을 줌
  • 다른 터미널 에뮬레이터(Alacritty, Wezterm 등)로 전환을 시도했으나 큰 차이는 없었음
  • 이전에 Zed에 대해 들어본 적 있었으나, 터미널 기반이 아니어서 사용을 중단했음. 하지만 Zed의 속도에 대한 긍정적인 평가를 듣고 다시 시도하기로 결심
  • 2개월 동안 매일 사용하면서, Zed가 매우 만족스러운 경험을 제공했으며, 앞으로도 계속 사용할 계획임. Neovim으로 돌아갈 생각이 없음

Zed 사용 경험

  • Zed를 선택하게 된 이유를 이해하기 위해, 지금까지의 일반적인 사용 경험과 나에게 어떻게 맞췄는지에 대해 설명하고자 함

모든 것이 "그냥 잘 작동함"

  • Zed의 가장 큰 장점 중 하나는 "모든 것이 그냥 잘 작동한다"는 것
  • 특히 언어 서버 프로토콜(LSP)과 같은 기능은 Neovim에서 설정하는 데 많은 시간이 걸리지만, Zed에서는 기본적으로 잘 작동함
  • Zed에서는 "정의 보기", "정의로 이동", "코드 작업"과 같은 키 바인딩이 기본으로 제공되며, 대부분의 언어를 지원해 문제가 발생하지 않음

속도

  • Zed를 선택한 주요 이유 중 하나는 속도였으며, 결과적으로 매우 만족스러웠음
  • 큰 코드베이스에서도 지연 없이 빠르게 작동하며, 지금까지 성능 문제를 경험한 적이 없음
  • Neovim의 속도를 더 빠르게 만들 수 있겠지만, 생산성 향상을 위해 시간을 낭비하는 것보다 Zed를 사용하는 것이 더 나음

Vim 모드

  • Neovim 사용자로서, VSCode의 Vim 플러그인이 불안정하고 버그가 많아 실망했던 경험이 있음
  • Zed의 Vim 모드는 개발자가 직접 만든 기능으로, 매우 안정적이며 중요한 기능을 잘 지원함
  • 키 바인딩 구조가 매우 유연하며, Vim 사용자들이 좋아할 만한 기능들을 제공함

AI 기능

  • Zed는 AI 기능도 제공하며, 기본적으로 Copilot이 내장되어 있음
  • OpenAI, Ollama, Anthropic 등의 AI 모델을 API를 통해 사용할 수 있음
  • 코드 일부를 선택하고 ctrl-enter로 AI 어시스턴트를 호출해 코드를 작성하는 인라인 어시스턴트 기능도 유용함

Zed ≠ Neovim

  • Zed가 Neovim을 완전히 대체할 수는 없음. Neovim은 터미널에 네이티브로 존재하는 것이 큰 강점임
  • 간단한 파일 수정 작업에는 Neovim이 더 편리하지만, 장기적인 세션이나 프로젝트에는 Zed가 완벽함

Neovim 사용자에게 Zed를 맞춤 설정하기

Zed는 Neovim의 완전한 대체품은 아니지만, Neovim/Vim 사용자에게 익숙한 환경을 제공하기 위해 다양한 작은 설정들을 통해 경험을 크게 개선할 수 있음

Vim 모드 및 키 바인딩

  • 첫 번째로 할 일은 Vim 모드를 활성화하는 것. Zed는 Vim 모드에 대한 문서 페이지를 제공하며, 기본 Vim 바인딩과 추가 설정 방법을 안내함
  • Zed의 큰 장점 중 하나는 Vim 모드에 따라 키 바인딩을 설정할 수 있다는 점. 예를 들어, "Normal" 모드와 "Visual" 모드에 다른 키 바인딩을 적용할 수 있음
[  
	{  
		"context": "Editor && VimControl && !VimWaiting && !menu",  
		"bindings": {  
			"space b": "editor::ToggleGitBlame",  
			"shift-k": "editor::Hover",  
			"space l f": "editor::Format",  
			"space d": "diagnostics::Deploy",  
			"space f f": "file_finder::Toggle",  
			"space o": "tab_switcher::Toggle",  
			"space e": "workspace::ToggleLeftDock",  
			"space /": "workspace::NewSearch",  
			"n": "search::SelectNextMatch",  
			"shift-n": "search::SelectPrevMatch",  
			"space t": "workspace::NewCenterTerminal",  
			"g b": "editor::ToggleComments",  
			"+ +": "workspace::Save",  
			"space c": "pane::CloseActiveItem"  
		}  
	},  
	{  
		"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",  
		"bindings": {  
			"shift-j": "editor::MoveLineDown",  
			"shift-k": "editor::MoveLineUp"  
		}  
	},  
]  
  • 또한, Zed에서 패널을 전환하는 키 바인딩을 설정해 Neovim과 유사한 작업 흐름을 만들 수 있음
[  
	{  
		"context": "Dock || Terminal || Editor",  
		"bindings": {  
			"ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],  
			"ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],  
			"ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],  
			"ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]  
		}  
	},  
]  
  • 기본 Vim 키맵을 참고하여 필요한 설정을 조정하는 것도 추천함. 기본 Vim 키맵은 Zed에서 지원하는 내용과 조정할 부분에 대한 유용한 참조 자료임

간소화된 UI

  • Zed는 이미 최소한의 UI를 제공하지만, Neovim 설정과 더 비슷한 UI를 선호하는 경우, 탭 바, 스크롤 바, 툴바 등을 비활성화할 수 있음
{  
	"cursor_blink": false,  
	"relative_line_numbers": true,  
	"scrollbar": {  
		"show": "never"  
	},  
	"vertical_scroll_margin": 0,  
	"tab_bar": {  
		"show": false  
	},  
	"toolbar": {  
	    "breadcrumbs": true,  
	    "quick_actions": false  
	},  
}  

플러그인 대체

  • Zed에서 텔레스코프(Telescope)와 유사한 기능으로 파일이나 버퍼 간의 탐색을 위해 탭 전환기(Toggle)를 사용할 수 있음
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space o": "tab_switcher::Toggle",  
	}  
}  
  • 프로젝트 전체 검색은 텔레스코프의 대체품으로, 다중 버퍼 보기를 통해 결과를 확인하고 쉽게 탐색할 수 있음
  • 터미널 토글은 VSCode와 유사하지만, Zed에서는 메인 편집 뷰에서 버퍼로 터미널을 열 수 있는 옵션도 있음
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space t": "workspace::NewCenterTerminal",  
	}  
}  
  • Tmux와 프로젝트 전환 기능을 완전히 대체할 수는 없지만, Zed의 프로젝트 전환 기능이 이 작업을 상당히 잘 수행함
{  
	"context": "Workspace",  
	"bindings": {  
		"cmd-k": [  
			"projects::OpenRecent",  
			{  
				"create_new_window": false  
			}  
		]  
	}  
}  

Zed를 사용해야 할까?

  • Zed를 시도해볼지 고민 중이라면, 며칠 동안 사용해보는 것을 추천함
  • Zed는 독특하고 유능한 텍스트 편집기이며, 궁극적으로는 생산성을 높여주는 도구가 중요함
  • 그것이 VS Code, JetBrains, 혹은 EMacs가 될 수도 있음
  • 자신에게 가장 적합한 도구를 선택하되, 새로운 것을 시도해보는 데 너무 완고하지 않기를 바람
Hacker News 의견
  • Zed를 처음에는 좋아했지만, 협업 및 AI 기능에 집중하면서 기본 편집기로서의 기능이 부족해져서 덜 유용해짐

    • 현재는 예전 편집기와 IDE로 돌아갔으며, 나중에 다시 시도할 예정임
  • Helix를 사용하는 이유는 VSCodium에서 Vim이나 Neovim으로 전환하려 했으나 플러그인 설정이 어려웠기 때문임

    • Helix는 바로 작동하여 사용 중이며, 키 바인딩이 직관적이고 Vim 키 바인딩도 익힐 수 있었음
    • 기본 색상 테마가 다소 충격적임
  • 최근 Vim에서 Zed로 전환했으며, Zed가 여러 면에서 훌륭하다고 생각함

    • 그러나 기본 기능에 많은 버그가 있어 AI 통합 등보다 기본 기능에 우선순위를 두었으면 좋겠음
  • Zed를 사용할 때 매우 빠르고 깔끔한 UI를 즐김

    • Git 통합과 원격 지원이 더 좋다면 완전히 전환할 수 있을 것임
  • 6개월 전 VSCode에서 Zed로 전환했으나 최근 Neovim으로 다시 전환함

    • Zed의 Vim 통합 접근 방식을 좋아했으나, 기본 기능 부족과 버그로 인해 Neovim으로 전환함
    • Zed가 성숙해지면 다시 돌아갈 의향이 있음
  • Zed가 더 다듬어지고 안정화되기를 기대함

    • 그때까지는 Sublime Text 4를 사용 중이며, 성능이 뛰어나고 LSP 확장과 Sublime Merge가 VSCode의 빈틈을 메워줌
  • Neovim 배포판을 사용해 보았는지 궁금함

    • LazyVim, AstroVim, NvChad와 같은 배포판은 필요한 플러그인과 통합이 이미 설정되어 있음
  • VSCode에서 진정한 Neovim을 원한다면 vscode-neovim을 확인해 볼 것을 추천함

    • 실제 VIM과 VSCode의 모든 기능을 함께 사용할 수 있음
  • Kakoune와 Helix에 관심을 가지게 되어 VSCode용 모달 편집 확장을 작성함

    • VIM의 대부분의 기능을 지원하며, AST 기반의 새로운 동작과 모드를 추가함
    • 블로그 포스트를 작성할 계획임
  • macOS에서 Zed를 탐험했을 때 빠르고 기능이 풍부한 편집기라는 인상을 받음

    • 그러나 *nix 시스템에서는 vi/vim만큼 보편적이지 않음
    • 다양한 인프라와 배포 제약을 고려할 때, 보편적인 편집기에 집중하는 것이 더 쉬움
    • Zed가 vi/vim의 대안이 될 수 있지만, 대부분의 vi/vim 사용자가 전적으로 전환할 가능성은 낮음

저도 최근 Helix로 넘어왔습니다.
Hacker News 의견처럼 기존 NeoVim에서 플러그인을 모두 활용하지 않아서 helix를 테스트해보고 바로 넘어오게 되었는데요. 색상 테마가 정말 충격적이긴 합니다

기본 테마가 보라보라해서 별로라는 의미이실까요? :eyes: