포스트

Neovim에서 [[위키링크]] 따라가기·백링크 — 어떤 플러그인? (그리고 vimwiki 함정)

평범한 마크다운 디렉토리에서 위키링크 점프와 백링크만 원할 때, 직접 짜지 말고 기존 플러그인을 고른다. snacks picker 유저 기준으로 obsidian.nvim 포크와 Marksman LSP가 갈리고, '이미 깔린 vimwiki를 확장'하는 게 오히려 함정인 이유를 지표와 함께 정리한다.

Neovim에서 [[위키링크]] 따라가기·백링크 — 어떤 플러그인? (그리고 vimwiki 함정)

평범한 .md 파일 디렉토리 — 이를테면 노트 95개 중 41개가 [[다른-노트]]로 서로를 참조하는 상태 — 에서 딱 두 가지만 하고 싶다고 하자. 링크 위에서 눌러 점프하고, 이 노트를 참조하는 다른 노트들(백링크)을 찾기. 직접 플러그인을 짤 필요는 없다. 이미 하는 도구가 여럿 있다.

문제는 어떤 걸 고르느냐인데, 여기서 두 가지가 결정을 뒤흔든다. 하나는 쓰고 있는 picker가 telescope가 아니라 snacks냐이고, 다른 하나는 — 반직관적이지만 — “이미 깔려 있는 vimwiki를 확장”하는 게 최악의 선택이라는 점이다.

PKM(Personal Knowledge Management, 개인 지식관리) 전반을 org-mode·Obsidian과 비교하는 상위 관점은 Neovim과 PKM에서 다룬다. 이 글은 그 아래 층위 — “링크 점프·백링크”라는 구체적 기능을 어느 플러그인으로 얻느냐 — 의 실전 결정 가이드다.

⚠️ 함정 먼저: vimwiki 확장은 하지 마라

vimwiki가 이미 깔려 있다면 (블로그·위키 용도로 흔하다) “그거 vault에도 걸면 공짜 아냐?”라는 생각이 든다. 함정이다.

vimwiki에는 백링크 명령 :VimwikiBacklinks(줄여서 :VWB)가 있다. 그런데 마크다운 모드에서는 [[위키 스타일]] 링크를 인식하지 못한다. issue #1244로 2022년부터 열려 있는 회귀(regression) 버그다. [텍스트](파일) 형태의 표준 마크다운 링크만 찾는다.

즉 노트의 링크가 전부 [[ ]] 스타일이면 백링크 결과가 항상 비어 있다. 주 요구사항 자체를 못 채운다.

여기에 더해 vimwiki는 wiki로 등록된 파일의 filetypemarkdown이 아니라 vimwiki로 바꿔 버린다. 그러면 render-markdown, treesitter의 마크다운 파서, 마크다운 LSP가 그 파일에서 동작을 멈춘다. <Tab>·<Enter>·<Backspace> 키도 vimwiki가 가로챈다. g:vimwiki_global_ext=1(모든 .md를 wiki로 취급)을 켜면 이 하이재킹이 시스템의 모든 마크다운 파일로 번진다.

교훈: “이미 깔려 있으니 공짜”를 의심하라. 확장에 드는 비용(버그 + 하이재킹)이 새 플러그인 하나 도입보다 클 수 있다. vimwiki는 원래 쓰던 용도(예: 블로그 포스트)에만 남겨 두고, 노트 디렉토리에는 붙이지 않는 게 맞다.

후보 지형 (2026년 7월 기준)

채택도를 볼 때 GitHub 스타만 보면 오해한다 — 스타는 오래된 프로젝트에 누적된 “레거시 질량”일 수 있다. 여기서는 dotfyle(dotfyle.com — 공개된 Neovim 설정을 추적하는 사이트) 의 config 수를 함께 본다. “몇 명이 실제로 굴리고 있나”에 스타보다 가까운 신호다.

플러그인config링크 따라가기백링크snacks picker비고
obsidian.nvim (포크)2.0k141gf / follow_link:Obsidian backlinkssnacks✅ 네이티브모멘텀 리더, v3.16.5(2026-06)
Marksman (LSP)gf / lsp.definitionlsp.references → snacks플러그인 0개, LSP 서버만
mkdnflow.nvim81917MkdnFollowLink:MkdnBacklinks (quickfix)❌ 의존 없음최소·니치
zk-nvim84432lsp.definition:ZkBacklinks외부 zk 바이너리 + notebook 필요
telekasten.nvim1.7k26❌ telescope 종속zettelkasten 강제
vimwiki9.5k⚠️ [[ ]] 못 봄 (#1244)스타는 2010년대 레거시 질량

몇 가지 짚을 점:

  • 원조 epwalsh/obsidian.nvim은 아카이브됐다. 유지되는 건 커뮤니티 포크 obsidian-nvim/obsidian.nvim이다. 원작자 방치 뒤 커뮤니티가 포크해 활발히 개발한다는 것 자체가 “사람들이 정착했다”는 신호다.
  • telekasten가 강제하는 zettelkasten(독일어 “쪽지 상자” — 원자적 노트를 링크로 엮어 지식을 키우는 PKM 방법론)은 데일리 노트·템플릿·uuid를 요구해서, 링크만 원하는 평범한 디렉토리에는 과하다. 게다가 telescope에 묶여 있어 snacks 유저가 telescope를 되불러오는 꼴이 된다.
  • zk-nvim은 강력하지만 외부 zk CLI(Go 바이너리) 설치와 .zk notebook 초기화가 필요하다 — 평범한 md 디렉토리에는 격식이 과하다.
  • mkdnflow는 의존성 0에 가장 가볍지만, 백링크가 snacks가 아니라 quickfix 창으로 뜨고 채택도가 낮다(config 17).

두 갈래 결론

snacks picker를 쓰는 사람 기준으로 진짜 후보는 둘이다. 축은 하나 — 플러그인을 아예 안 늘릴 것이냐, 전용 명령·기능을 얹을 것이냐.

미니멀 — Marksman LSP (플러그인 0개)

가장 “있는 것 쓰기”에 부합한다. 노트 플러그인을 하나도 안 깔고, LSP 서버 marksman(마크다운 전용 language server) 하나만 붙인다. LazyVim이면 lang.markdown extra로 바로 들어온다.

  • [[ ]] 위에서 gf 또는 vim.lsp.buf.definition() → 점프
  • 백링크 = LSP referencesvim.lsp.buf.references()가 snacks picker로 뜬다
  • 상태도, 의견도 없다. 어떤 평문 md 디렉토리에나 그냥 붙는다

트레이드오프는 멘탈 모델이 살짝 다르다는 것 — “백링크”를 별도 개념이 아니라 LSP의 참조 찾기로 얻는다. 하지만 결과는 같다: 이 노트를 가리키는 노트들의 목록. Neovim 노트 콘텐츠로 알려진 크리에이터 linkarzu가 telescope를 버리고 정확히 이 조합(Marksman + snacks)을 쓴다.

전용 명령·리팩터링 — obsidian.nvim 포크

“제대로 된 노트 플러그인 + 이름 있는 명령”을 원하면 이쪽. Obsidian 앱은 필요 없다.obsidian 폴더 없이 평범한 md 디렉토리에 workspace 경로만 지정하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
-- lua/plugins/obsidian.lua
return {
  {
    "obsidian-nvim/obsidian.nvim",
    version = "*",
    ft = "markdown",
    opts = {
      workspaces = { { name = "notes", path = "~/path/to/notes-dir" } },
      picker = { name = "snacks.picker" }, -- telescope/fzf/mini도 지원
    },
  },
}

Marksman에 없는 것을 얹어 준다:

  • :Obsidian rename — 노트 이름을 바꾸면 vault 전체의 링크를 자동으로 갱신한다. 수동으로는 못 하는 리팩터링이다.
  • [[ 를 타이핑하면 노트 이름 자동완성 (in-process LSP)
  • :Obsidian backlinks → snacks picker로 백링크
  • :Obsidian paste_img — 클립보드 이미지를 저장하고 링크 삽입

daily notes·템플릿·frontmatter 관리 같은 machinery가 딸려오지만 대부분 opt-out할 수 있다. 다만 frontmatter 자동 관리는 이미 front-matter를 스스로 다루는 워크플로우(예: Jekyll 블로그 자동화)와 충돌하니 꺼 두는 게 안전하다.

정리

  • 노트의 링크가 [[ ]] 스타일이면 vimwiki 확장은 하지 마라:VimwikiBacklinks가 이걸 못 보고(#1244), filetype 하이재킹으로 다른 마크다운 도구까지 깨진다. “이미 깔림 = 공짜”는 함정.
  • snacks 유저 기준 두 갈래: 미니멀이면 Marksman LSP(플러그인 0개, references가 곧 백링크), 전용 명령·링크 리네임까지면 obsidian.nvim 포크.
  • 도구를 고를 땐 스타 수보다 config 수·릴리스 최신성으로 모멘텀을 본다. 원작자 방치 후 커뮤니티 포크가 활발하면 그게 정착의 증거다.
  • 백링크는 꼭 노트 전용 플러그인이 있어야 얻는 게 아니다 — LSP의 참조 찾기로도 된다. 가장 적게 늘리는 길이다.

LazyVim 기본 너머의 플러그인 지형은 LazyVim 너머 인기 플러그인도 함께 참고.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.