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

VIMRC 2022

VIMRC 2022

My vim usage history and several tips

Joongi Kim

July 23, 2022
Tweet

More Decks by Joongi Kim

Other Decks in Programming

Transcript

  1. nvimrc 2022
    김준기 achimnol

    View full-size slide

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

    View full-size slide

  3. PyCharm? VSCode
    • CUDA GPU를 활용해야 했기 때문에 원격 개발이 필수
    • PyCharm도 원격 개발 기능을 제공하긴 했지만...
    • VSCode는 근본적으로 서버 클라이언트 구조를 채택하여 자연스럽게 지원
    – 그리고 그럭저럭 쓸 만한 Vim 플러그인!

    View full-size slide

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

    View full-size slide

  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 문법도 잘 지원함!

    View full-size slide

  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

    View full-size slide

  7. VSCode Vim Tip
    • VSCode Vim에서 명령/검색어 입력 시 Backspace가 본문에 적용되어요!
    – Shift Backspace를 사용하면 되는데, 아예 그 타겟 명령을 조건에 따라 리매핑

    View full-size slide

  8. NeoVim Tip
    • 최신 버전 0.7 을 기준으로 플러그인이 업데이트된 경우가 많아 최신 버전 사용 권장
    • 주의 : Ubuntu 등에서 Snap으로 설치 시 Lua 5.1과 함께 빌드된 버전이 받아짐
    – 대부분의 플러그인이 LuaJIT을 기준으로 호환성이 맞춰져있어 직접 빌드하는
    것을 추천함 telescope에서 검색이 안 된다거나 하는 증상 발생
    – 직접 빌드가 필요한 경우 : Linux aarch64 환경

    View full-size slide

  9. 고수님들께 질문...
    • NeoVim ALE 플러그인에서 fixer가 동작하지 않아요! ㅠㅠ
    – 참고 pantsbuild 기반 python tool 경로 설정

    View full-size slide