NeoVim에서 Zed로 갈아탄 경험
원문은 Ellie Huxtable님이 에 게재했습니다. 이 블로그 구독하기
적어도 지난 10년간 Vim/NeoVim을 써왔다. 워크플로우가 터미널 중심으로 바뀌면서 Sublime Text에서 갈아탔다.
그 이후로 수많은 에디터를 써봤지만 결국 항상 Vim으로 돌아왔다. VSCode도 괜찮았지만 Vim 에뮬레이션이 영 어색했다. 자꾸 헛발질을 하게 됐고 경험 자체가 매우 거슬렸다. 에디터가 너무 복잡하다는 느낌도 들었다. 그냥 조용히 텍스트나 편집하게 내버려 두면 좋겠다.
emacs(정확히는 evil)와 helix 등 다른 에디터도 써봤다.
하지만 지금까지 중에서는 Zed가 나를 끌어들이는 데 가장 가까웠다. 작년쯤 한 번 써봤을 때는 아직 다듬어지지 않은 느낌이었고, 게다가 당시에는 오픈소스도 아니었다.
Atuin이라는 Rust 프로젝트로 시작했다. 툴링이 모두 자동으로 설정됐고 내가 따로 설정할 필요가 없었다. 좋았다!
설정
Zed는 기본 상태로도 꽤 괜찮지만, 몇 가지 바꾸고 싶은 부분이 있었다.
내 전체 설정은 다음과 같다:
{
"theme": "Gruvbox Dark Soft",
"vim_mode": true,
"buffer_font_size": 12,
"ui_font_size": 14,
"buffer_font_family": "FiraCode Nerd Font",
"relative_line_numbers": true,
"terminal": {
"line_height": "standard"
},
"lsp": {
// Specify the LSP name as a key here.
"rust-analyzer": {
//These initialization options are merged into Zed's defaults
"initialization_options": {
"checkOnSave": {
"command": "clippy"
}
}
}
}
}테마나 폰트 같은 당연한 설정 외에는 기본 터미널 줄 높이가 좀 이상했다. 있어야 할 것보다 약간 높게 느껴졌고, 그래서 일부 TUI가 어색하게 보였다. 이를 "standard"로 설정하니 해결됐다.
Rust용 lsp 설정도 약간 조정했다.
키 바인딩
다음으로 손본 건 Vim 바인딩이었다. 기본값도 꽤 표준적이지만, 생산성을 위해 꼭 필요한 핵심 커스텀 몇 가지가 있다.
jj- jj를 esc로 리맵해서 손가락이 홈 로우에 머물도록 한다<leader>w- 현재 버퍼 저장<leader>s t- 전체 워크스페이스에서 grep<leader>f- 파일 검색
내가 아는 한 Zed에는 leader라는 개념이 없다. 괜찮다! 바인딩을 하드코딩하면 되니까.
내 설정은 이렇다:
[
{
"context": "Editor && vim_mode == insert && !menu",
"bindings": {
"j j": "vim::NormalBefore"
}
},
{
"context": "Editor && vim_mode == normal && !menu",
"bindings": {
"space w": "workspace::Save",
"space s t": "workspace::NewSearch",
"space f": "file_finder::Toggle"
}
}
]키맵에서 context를 표현식으로 지정할 수 있다는 점이 꽤 멋지다고 생각했다. inoremap 같은 것보다 훨씬 읽기 쉽다.
다른 액션은 기본 키 바인딩에서 찾을 수 있다(cmd-shift-p를 누르고 default keybindings 검색)
편집 경험
Zed는 써보니 매우 만족스러웠다. 모든 것이 부드럽게 동작하고, 성능에 정말 많은 공을 들였다는 게 확실히 느껴진다. UI는 미니멀하고, Sublime을 약간 떠올리게 한다.
그들의 UI 프레임워크는 Rust로 작성됐고, 곧 이를 사용하는 더 많은 애플리케이션을 볼 수 있기를 기대한다!
정착할 수 있을까?
아직은 아니다. 하지만 거의 다 왔다! 시도해 본 다른 어떤 에디터보다 오래 썼지만, 에디터 안에 터미널이 있는 에디터를 쓰는 건 아직 어색하다. 터미널 안에 에디터가 있는 게 아니라. 물론 이건 전적으로 내 문제고 Zed와는 상관없다.
그 외에는 vim 에뮬레이션에 아직 몇 가지 빈틈이 있다. 나는 마크를 꽤 많이 쓰는데, 아직 지원되지 않아 자꾸 걸리적거렸다. 가끔 jj 바인딩이 동작하지 않는 것 같기도 했다. 너무 빨리 눌러서 그런 걸지도 모른다. 쉽게 재현할 수는 없었고, 그냥 가끔 발생했다.
앞으로도 계속 Zed를 지켜볼 생각이고, 어쩌면 곧 완전히 갈아탈지도 모르겠다.
글을 무작위로 읽기
댓글
로그인하고 댓글 남기기