Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VIMRC 2022

VIMRC 2022

My vim usage history and several tips

E76db8a47bdae9ef76629ecb366483ed?s=128

Joongi Kim

July 23, 2022
Tweet

More Decks by Joongi Kim

Other Decks in Programming

Transcript

  1. nvimrc 2022 김준기 achimnol

  2. 나의 Vim 역사 • 학부 2005년 2009년 – 웹서비스 백엔드

    개발 otl.kaist.ac.kr / 태터툴즈 텍스트큐브 – BBS에 대한 향수가 남아있는 선배들과 PC 웹에 익숙한 후배들의 중간 어딘가... – 동아리 회원명부에 자기 자신을 등록하려면 vim을 배워야 했음 • 대학원 2010년 2016년 – GPU 가속 패킷 처리 프레임워크 연구 – GPU와 특정 NIC 모델이 있는 서버에서 커널 드라이버를 직접 커스텀해서 개발하는 환경 – 당시에는 IDE들의 원격 개발 기능이 매우 구렸음 vim.... • 창업 2017년 현재 – Backend.AI 개발도 첫 5년 간은 모두 vim으로...
  3. PyCharm? VSCode • CUDA GPU를 활용해야 했기 때문에 원격 개발이

    필수 • PyCharm도 원격 개발 기능을 제공하긴 했지만... • VSCode는 근본적으로 서버 클라이언트 구조를 채택하여 자연스럽게 지원 – 그리고 그럭저럭 쓸 만한 Vim 플러그인!
  4. NeoVim • Vim을 밑바닥부터 새로 구현! – async subprocess 지원으로

    플러그인의 신세계를 열었음 – 오랜 기간 6.x, 7.x에 머무르던 Vim의 개발을 자극하여 8.x, 9.x에서 NeoVim의 기능들을 대거 흡수함 • Lua 기반 플러그인 시스템 지원 – async subprocess LuaJIT으로 매우 빠른 플러그인 실행 • 17년 간 Vim만 쓰다가 한 달 전에 드디어 NeoVim으로 갈아탐! – 첫인상 : 커서 모양이 예뻐요!
  5. NeoVim으로 갈아탄 사소한 계기 • https://github.com/vim python/python syntax – 여기에

    Python 3.6 f string literal 문법 강조 기여함 fork 전 저장소 – Python 3.10 structural pattern matching 문법을 추가하려고 보니, match가 strong keyword가 아님 문맥에 따라 키워드일 수도 있고 아닐 수도 있음 – 귀찮은데... • NeoVim에는 treesitter라는 게 지원된다고 함 – https://tree sitter.github.io/tree sitter/ – https://github.com/nvim treesitter/nvim treesitter – 편집기를 위한 efficient incremental parser generator 프로젝트 – 테스트해보니 match 문법도 잘 지원함!
  6. 나의 vim 설정 • https://github.com/achimnol/dotfiles – vim, nvim 설정 모두

    포함 – README: vim 플러그인 설치 방법 • 가장 좋아하는 플러그인 – airline / nvim lualine – nvim telescope – ALE – vinegar / nvim tree – ...오늘부터 CoC?? • wezterm과 함께 조합하면 엄청 빠릅니다! Rust 기반 GPU 가속 터미널 – https://wezfurlong.org/wezterm
  7. VSCode Vim Tip • VSCode Vim에서 명령/검색어 입력 시 Backspace가

    본문에 적용되어요! – Shift Backspace를 사용하면 되는데, 아예 그 타겟 명령을 조건에 따라 리매핑
  8. NeoVim Tip • 최신 버전 0.7 을 기준으로 플러그인이 업데이트된

    경우가 많아 최신 버전 사용 권장 • 주의 : Ubuntu 등에서 Snap으로 설치 시 Lua 5.1과 함께 빌드된 버전이 받아짐 – 대부분의 플러그인이 LuaJIT을 기준으로 호환성이 맞춰져있어 직접 빌드하는 것을 추천함 telescope에서 검색이 안 된다거나 하는 증상 발생 – 직접 빌드가 필요한 경우 : Linux aarch64 환경
  9. 고수님들께 질문... • NeoVim ALE 플러그인에서 fixer가 동작하지 않아요! ㅠㅠ

    – 참고 pantsbuild 기반 python tool 경로 설정