Vim, 어디까지 알고 있니?
근거 기반으로 살펴보는 생산성 도구로서의 Vim
간단한 소개
INTP/ENFP 하이브리드 개발자��VSCode/RoamResearch/GitKraken 번갈아가면서 쓰다가
Neovim 으로 대동단결해서 사용한지 1년 하고도 8개월
https://vim.kr <- 요런 디스코드를 운영하는 사람입니다.
twitter : @kodingwarrior
이 세션에서는 Vim을 어떻게 하면 내 입맛에 맞게 개조할 수 있는지를 소개합니다.��어떤 도구를 사용하더라도 생산성을 극대화할 수는 있습니다만,�“Vim으로는 이런 것까지 가능하다” 라는 관점을 소개하는 �편파적인 내용이 주요 흐름이 될 수 있는 점 양해바랍니다.
이번 강연에서 다룰 주제
어떻게 Vim을 접하게 되었나요?
어떻게 Vim을 접하게 되었나요?
우리가 Vim에 대해서 �어렴풋이 아는 것들
우리가 Vim에 대해 어디까지 알고 있나요? (문자열 조작)
우리가 Vim에 대해 어디까지 알고 있나요? (모드 스위칭)
우리가 Vim에 대해 어디까지 알고 있나요? (매크로)
우리가 Vim에 대해 어디까지 알고 있나요? (매크로)
우리가 Vim에 대해 어디까지 알고 있나요? (relative num)
뺄셈으로 암산하고 이동
바로 보이는 숫자를 입력해서 이동
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해 어디까지 알고 있나요? (Visual mode)
우리가 Vim에 대해서 �모르는 것들
Textobjects
텍스트를 묶음 단위로 편집할 수 있다!
자세한 내용은 :h text-objects 를 참고해보세요.
Textobjects
Textobjects
Terminal mode
Terminal mode
pipelining from Visual mode
에디터 확장으로 체험해보기
using vscode-vim, ideaVim
VSCode, intelliJ 로도 정말 가능한가요?
Textobjects
Terminal mode
Live Demo
pipelining from Visual mode
Live Demo
원조 맛집 �Vim/Neovim 살펴보기
Vim이 어떻게 생산성 개선에 도움이 될까?
그래서… 정말 Vim 해도 괜찮은 거 맞죠…?
하셔도 되고 안 하셔도 됩니다�
천천히 적응하고 싶으신 분들은 VSCode / IntelliJ 통해서 천천히 접근하시고..
슬슬 마우스를 굳이 쓸 필요가 없겠다 싶은 분들은..
천천히 kickstart.nvim 같은 미리 세팅된 스타터킷을 통해 접하는 것을 권장합니다.
Vim에서 좀 더 편하게 git을 사용하기 (vim-fugitive)
Vim에서 좀 더 편하게 git을 사용하기 (vim-fugitive)
Vim은 CLI 도구를 에디터에 잘 녹아들게 해주는 만능 도구
https://github.com/tpope/vim-fugitive/blob/dac8e5c2d85926df92672bf2afb4fc48656d96c7/autoload/fugitive.vim#L4935-L4967 : 변경사항을 펼쳐보기
https://github.com/tpope/vim-fugitive/blob/dac8e5c2d85926df92672bf2afb4fc48656d96c7/autoload/fugitive.vim#L5246-L5288 : 변경사항을 stage 영역에 넣었다 빼기
그리고 Neovim…?
Vim vs Neovim
https://kodingwarrior.github.io/wiki/vim/versus-neovim/
Treesitter
LSP builtin Support
Neovim의 Killer Plugin – Telescope.nvim
Neovim 진영의 “범용성 검색 엔진”
키맵을 따닥따닥 하는 것 만으로도 �파일 검색 및 패턴 검색이 가능하게 해주는�Neovim 생태계의 핵심 플러그인 그 자체!
Query를 넣고 싶은 것이라면 무엇이든 개조해서 사용할 수 있음.
Neovim의 Killer Plugin – Telescope.nvim
(Telescope.nvim) 파일 검색
Neovim의 Killer Plugin – Telescope.nvim
(Telescope.nvim) 패턴 검색
Neovim의 Killer Plugin – Telescope.nvim
Telescope에서 지원하는 다양한 기능들
필요에 따라 확장도 가능하고, 쿼리할 수 있는 모든 기능들을 검색할 수 있음�(git commit, 사용가능한 keymap, manpage, …)
Neovim의 Killer Plugin – nvim-cmp
Vim/Neovim as Personal Developmenet Environment
Vim/Neovim as Personal Developmenet Environment
Vim/Neovim as Personal Developmenet Environment
함께 알면 좋은 도구 - wezterm/kitty/alarcritty
건강한 정신이 건강한 신체에서 나오듯이,�훌륭한 터미널 기반 개발 경험은 훌륭한 터미널에서 나옵니다.
파일 시스템 기반으로 설정을 관리할 수 있는 �터미널을 사용하는 것과 아닌 것의 차이는 큽니다.�
투명도 조절, 탭 이동, 탭 이름 변경, 탭 위치 변경, …�내 입맛에 맞게 튜닝하면, 어떤 환경에서든 동일한 경험을 누릴 수 있습니다.
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
타입(기껏해봐야 String..) 이라는게 있나 싶을 정도로 난해한 bash script��소스코드는 기껏해봐야 1차원/2차원 문자열이기 때문에 �내 입맛대로 우아하게 처리하고 싶을 땐 스크립트 언어만한 것이 없음.
vim/lua 스크립팅의 한계를 극복하고 싶을때 Plan B로 활용하기에도 좋음
perl - git이 깔려있으면, 어느 기기에서든 이용이 가능함
ruby - 직접 설치를 해야 하지만, mac에는 기본으로 깔려있음. perl보다 가독성이 좋음
python - 언어 자체로는 많은 사람들에게 권장은 하지만, one-liner 용으로는 비추
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
예시 1 - Vim 인스턴스를 띄울때 여러개의 버퍼를 동시에 띄우기
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
예시 1 - Vim 인스턴스를 띄울때 여러개의 버퍼를 동시에 띄우기
# => nvim -O planner/2024-04.md monthly/2024-04.md
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
예시 2 - 월간 계획 양식 찍어내기
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
예시 2 - 월간 계획 양식 찍어내기
함께 알면 좋은 도구 - 스크립트 언어(perl, python, ruby, …)
함께 알면 좋은 도구 - chezmoi (dotfiles manager)
dotfiles�.zshrc, .vimrc, .config/nvim, .config 등등 파일로 관리할 수 있는 개발환경 구성
chezmoi를 이용하면 git으로 버전을 관리하듯이, �내 개발환경의 버전을 관리하기가 수월해집니다.
제 개발환경은 사실... 아래 명령어만 실행하면 누구나 이용하실 수 있습니다.
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply git@github.com:malkoG/dotfiles
함께 알면 좋은 도구 - mise
함께 알면 좋은 도구 - mise (example: custom task)
마치며..
나에게 맞는 도구를 찾고 다듬는 여정
나에게 맞는 도구를 찾고 다듬는 여정
ex1) 괄호 안쪽을 비우고 싶어! — ci(, ci{, ci[ vs 마우스 드래그 + delete�ex2) 100번째 라인에서 발생한 에러 확인하기 — :100 vs 눈금보면서 확인하기 �ex3) 몸이 기억하는 빠른 텍스트 편집 / ex4) 생산성 도구의 가짓수를 줄이기��“Practical Vim”라는 책의 부제는… Edit Text at the Speed of Thought
원하는대로 가져다 쓰세요
https://github.com/malkoG/dotfiles
And more..?
사전 Q&A
Q. 빔을 통해 생산성을 올리려면 아무것도 모르는 상태에서
어떤 컨텐츠로 배우는 게 좋을지 궁금합니다!
다른 사람이 일을 하는 방식을 보면서
“이걸 어떻게 하는거지?” 라는 호기심에서 출발하는 것도 좋습니다.
CLI 도구들을 알게 되는 과정도 비슷합니다.
무엇보다도 생산성 개선에는 목적성이 있어야 합니다.
일단 본인이 어떤 것을 개선하고 싶은지를 생각해볼 필요는 있습니다.
Q. 빔을 통해 생산성을 올리려면 아무것도 모르는 상태에서
어떤 컨텐츠로 배우는 게 좋을지 궁금합니다!
추천하는 스트리머
Q. 기존 편집기 단축키(vscode)에 익숙한 상태인데 vim 플러그인과 함께할 수 있을까요?
vscode-vim과 함께하세요
https://marketplace.visualstudio.com/items?itemName=vscodevim.vim
물론 vim 플러그인 생태계와는 호환이 되진 않습니다.
Q. 다른 text editor 대비 vim을 꼭 써야만 하는 이유가 있다면, � vim이 아니면 할 수 없는 일이 있다면 무엇이 있을까요? � 편의성이 뛰어난 다른 에디터들을 쓰지 않고 vim을 파고들 이유가 있다면..?
emacs도 위와 비슷한 장점이 있습니다.
Q. 외부 plugin 등을 사용하지 않고 순수하게 vim만 사용한다고 했을 때, � vim을 사용할 메리트?가 충분할까요..?
외부 플러그인을 사용할 수가 없는 환경에서도 잘 적응하는게 목표라면 메리트는 있을겁니다.
예를 들면…. �ssh로 원격서버에 접근해서 로그를 들여다본다던가.. �configuration을 효율적으로 편집한다던가..
보통은 1) 내가 해야하는 번거로운 일들/ 2) 일을 하다보니 느껴지는 인지부하 같은 것들을 줄이기 위해 플러그인을 설치하게 됩니다.
Q. 매크로 기능 유용하게 사용하는 방법과 스니펫 같은것도 만들어서 사용가능한가요!?
매크로 기능은…. �키바인딩에 익숙해지는 것에서부터 시작해야 합니다.�개인적으론 알고리즘 문제를 내가 인터프리터가 되어서 직접 푼다는 느낌으로 접근합니다
스니펫은 �“내가 자주 사용하긴 하는데 이거 타이핑한다고 시간 잡아먹고 싶지 않은거"�위주로 필요에 따라 직접 만들면 됩니다.
Q. vim 외에도 생산성을 올리기 위해 어떤 도구를 사용하는지 궁금합니다. � 또는 생산성 향상을 위한 강연자님만의 업무 프로세스가 있는지 궁금합니다.
의외로 미니멀리즘을 지향합니다.�생산성 도구를 도입하면서 각 생산성 도구의 사용법을 기억해야하는 �생산성 도구의 늪에 빠지고 싶지는 않거든요.
�앞서 말했듯, 개선이 필요하다 싶은 순간이 왔을 때 튜닝을 합니다.�가끔은… 커뮤니티에서 귓동냥하거나 혹은 �뉴스레터에서 괜찮은 물건들을 건질때도 있습니다.
Q. neovim에서도 각종 편의 기능(import문 정리나 메서드 추출, 중복 코드 판별 기능, 변수 이름 편집 기능)을 제공하는 익스텐션 같은게 있는지 궁금합니다.
이건 랭귀지 서버의 기능입니다
참고로, Spring은 IntelliJ 쓰는게 좋습니다.
Spring 진영은 랭귀지서버를 쓸 순 있어도 쓸만한게 없습니다 (ㅜㅜ)
Q&A
강연을 들어주셔서 감사합니다
강의자료는 https://slides.kodingwarrior.dev 에 모아놨습니다.
이메일 문의는 jaeyeol.lee@hey.com
SNS를 통한 문의는 @kodingwarrior
Vim을 사용하는 사람들과 네트워킹하고 싶다면? https://vim.kr