Neovim 2023
이번에야 말로 개발환경을 vsc에서 neovim으로 변경하고 싶어서 주말을 이용해서 연습중이다.
왜 굳이 vsc로 바꾸고 싶은가?
이유는 2가지
- 더 빠르다.
- 더 멋지다.
(...)
사전 설치
- Neovim
- Neovim이 없으면 시작이 안된다.
- Scoop - A command-line installer
- 윈도우용 패키지 매니저
- Oh My Posh - Prompt theme engine
- 눈에 들어오는 터미널을 위함1
- Terminal Icons - Folder and file icons
- 눈에 들어오는 터미널을 위함2
- GOW
- 윈도우에 unix shell 사용하기 위함
init.vim 만들기
C:\Users\%USERNAME%\AppData\Local vim
해당 위치에 init.vim
생성
vim-plug 설치
- vim-plug 설치
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni $HOME/vimfiles/autoload/plug.vim -Force
- nvim 설정
call plug#begin('~/.config/nvim/plugged')
" Use release branch
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Or latest tag
Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'}
call plug#end()
- 설치
- 터미널에서
nvim +PlugInstall
- nvim
:PlugInstall
둘 중 하나로 설치
- 사용하는 개발 언어 환경 설정
nvim에서 :CocInstall coc-deno coc-css coc-html coc-tsserver @yaegassy/coc-ruff coc-rust-analyzer
명령어로 사용하는 개발 언어 환경 설정
위 명령어는 deno, css, html, ts/js, python, rust
다시 한 번 nvim 설정
call plug#begin('~/.config/nvim/plugged')
Plug 'dracula/vim'
" Use release branch
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Or latest tag
Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'}
let g:coc_global_extensions = ['coc-emmet', 'coc-css', 'coc-html', 'coc-json', 'coc-prettier', 'coc-tsserver']
" ctrl + b => file explorer
Plug 'scrooloose/nerdtree'
Plug 'ryanoasis/vim-devicons'
let g:NERDTreeShowHidden = 1
let g:NERDTreeMinimalUI = 1
let g:NERDTreeIgnore = []
let g:NERDTreeStatusline = ''
" Automaticaly close nvim if NERDTree is only thing left open
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" Toggle
nnoremap <silent> <C-b> :NERDTreeToggle<CR>
" File Search
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
call plug#end()
if (has("termguicolors"))
set termguicolors
endif
syntax enable
colorscheme dracula
set autoindent
set cindent
set smartindent
set tabstop=4
set shiftwidth=4
set title
set wrap
set linebreak
set showmatch
set laststatus=2
" open new split panes to right and below
set splitright
set splitbelow
" turn terminal to normal mode with escape
tnoremap <Esc> <C-\><C-n>
" start terminal in insert mode
au BufEnter * if &buftype == 'terminal' | :startinsert | endif
" open terminal on ctrl+n
function! OpenTerminal()
split term://bash
resize 10
endfunction
nnoremap <c-n> :call OpenTerminal()<CR>
" use alt+hjkl to move between split/vsplit panels
tnoremap <A-h> <C-\><C-n><C-w>h
tnoremap <A-j> <C-\><C-n><C-w>j
tnoremap <A-k> <C-\><C-n><C-w>k
tnoremap <A-l> <C-\><C-n><C-w>l
nnoremap <A-h> <C-w>h
nnoremap <A-j> <C-w>j
nnoremap <A-k> <C-w>k
nnoremap <A-l> <C-w>l
nnoremap <C-p> :FZF<CR>
let g:fzf_action = {
\ 'ctrl-t': 'tab split',
\ 'ctrl-s': 'split',
\ 'ctrl-v': 'vsplit'
\}
let $FZF_DEFAULT_COMMAND = 'ag -g ""'
:PlugInstall
로 설치하고 nvim 재기동하면 완료.
ctrl + b 파일 익스플로어
ctrn + n 터미널
alt + hjkl 화면 이동
그 외는 에디터 설정
참고자료
- https://www.joinc.co.kr/w/man/12/neovim
- https://zenn.dev/yano/articles/neovim_frontend_development_2022
- https://betterprogramming.pub/setting-up-neovim-for-web-development-in-2020-d800de3efacd
- https://zenn.dev/takuya/articles/4472285edbc132
- https://github.com/craftzdog/dotfiles-public
- https://kodingwarrior.github.io/wiki/appendix/excelcon-2nd/