Post

Vim ๊ด€๋ จ ๋ฉ”๋ชจ

Vim ๊ด€๋ จ ๋ฉ”๋ชจ

๐Ÿง  Vim & Neovim ์ •๋ฆฌ ๋…ธํŠธ


๐Ÿ“ Marks

  • m + ํ‚ค : ๋งˆํฌ ์„ค์ •
  • :delm {key} : ํŠน์ • ๋งˆํฌ ์‚ญ์ œ
  • :delm! : ๋ชจ๋“  ๋งˆํฌ ์‚ญ์ œ
  • ` : ๋งˆํฌ ๋ชฉ๋ก ํ‘œ์‹œ

๐Ÿ” keywordprg

  • <Shift> + K : ์ปค์„œ ์œ„์น˜์˜ ํ‚ค์›Œ๋“œ ์„ค๋ช… ๋ณด๊ธฐ
  • man ํŽ˜์ด์ง€๋กœ ์„ค์ • ๊ฐ€๋Šฅ

    1
    
    :set keywordprg=man
    

โช Undo History

  • u : Undo
  • <C-r> : Redo
  • :undolist : Undo ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ
  • :UndotreeToggle : Undo ํŠธ๋ฆฌ ๋ณด๊ธฐ (๐Ÿ“ฆ undotree ํ”Œ๋Ÿฌ๊ทธ์ธ ํ•„์š”)

๐Ÿงฉ Fold

๋‹จ์ถ•ํ‚ค๊ธฐ๋Šฅ
z m / z M์ „์ฒด ์ ‘๊ธฐ
z r / z R์ „์ฒด ํŽผ์น˜๊ธฐ
z c / z oํ˜„์žฌ ์ปค์„œ ์œ„์น˜ fold ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ
z afold ํ† ๊ธ€

๐Ÿ’พ ์ธ์ฝ”๋”ฉ ๋ณ€๊ฒฝ

1๏ธโƒฃ ํ˜„์žฌ ๋ณด์ด๋Š” ๋ฌธ์ž์˜ ์ธ์ฝ”๋”ฉ ์ˆ˜์ •

1
2
:e ++enc=utf-8
:e ++enc=euc-kr

2๏ธโƒฃ ํ˜„์žฌ ํŒŒ์ผ์˜ ์ธ์ฝ”๋”ฉ ์ˆ˜์ •

1
2
:set fileencoding=utf-8 
:set fileencoding=euc-kr

โš™๏ธ Neovim ์„ค์น˜ ๋ฐ ์„ค์ •

1๏ธโƒฃ Neovim ์„ค์น˜

1
brew install neovim

2๏ธโƒฃ vim-plug ์„ค์น˜

1
2
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

3๏ธโƒฃ ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ

1
2
3
4
5
6
7
8
" ~/.config/nvim/init.vim
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
...
call plug#end()

set number
...

4๏ธโƒฃ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

1
:PlugInstall

๐Ÿ’ก Neovim์„ IDE์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ โ€” CoC.nvim

๐Ÿ”ง ๊ฐœ์š”

๊ธฐ์กด Vim ์ž๋™์™„์„ฑ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค coc.nvim์ด ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜๊ณ  IDE์— ๊ฐ€๊นŒ์šด ๊ธฐ๋Šฅ ์ œ๊ณต.

1๏ธโƒฃ Node.js ์„ค์น˜

1
curl -sL install-node.vercel.app/lts | bash

2๏ธโƒฃ vim-plug์— ์ถ”๊ฐ€

1
Plug 'neoclide/coc.nvim', {'branch': 'release'}

3๏ธโƒฃ ์„ค์น˜

1
:PlugInstall

4๏ธโƒฃ ์–ธ์–ด๋ณ„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

1
2
3
4
:CocInstall coc-json coc-tsserver
:CocCommand coc-clangd
" ์•ˆ ๋  ๊ฒฝ์šฐ
:CocCommand clangd.install

๐Ÿ”— ์ฐธ๊ณ : neoclide/coc.nvim GitHub


โš ๏ธ Swap File Error ํ•ด๊ฒฐ

๋น„์ •์ƒ ์ข…๋ฃŒ ํ›„ ์ž„์‹œํŒŒ์ผ์ด ๋‚จ์•„์žˆ์„ ๋•Œ ๋ฐœ์ƒ. ์•„๋ž˜ ํด๋”๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ํ•ด๊ฒฐ๋จ.

1
rm -rf ~/.local/share/nvim/swap/*

โš™๏ธ ์ฃผ์š” Vim ์˜ต์…˜ ์ •๋ฆฌ

์˜ต์…˜๊ธฐ๋Šฅ
set nocompatible์˜ค๋ฆฌ์ง€๋„ vi์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ
set autoindent์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ
set cindentC ์–ธ์–ด ์ „์šฉ ๋“ค์—ฌ์“ฐ๊ธฐ
set smartindent์Šค๋งˆํŠธ ๋“ค์—ฌ์“ฐ๊ธฐ
set wrap์ค„๋ฐ”๊ฟˆ ํ—ˆ์šฉ
set nowrapscan๊ฒ€์ƒ‰ ์‹œ ๋ฌธ์„œ ๋์—์„œ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์Œ
set nobackup๋ฐฑ์—…ํŒŒ์ผ ์ƒ์„ฑ ์•ˆ ํ•จ
set visualbell์ž˜๋ชป๋œ ํ‚ค ์ž…๋ ฅ ์‹œ ์‹œ๊ฐ์  ์•Œ๋ฆผ
set ruler์ปค์„œ ์œ„์น˜ ํ‘œ์‹œ
set shiftwidth=4์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ 4์นธ
set numberํ–‰ ๋ฒˆํ˜ธ ํ‘œ์‹œ
set fencs=ucs-bom,utf-8,euc-kr,latin1๋‹ค์–‘ํ•œ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ
set fileencoding=utf-8ํŒŒ์ผ ์ €์žฅ ์ธ์ฝ”๋”ฉ
set tenc=utf-8ํ„ฐ๋ฏธ๋„ ์ธ์ฝ”๋”ฉ
set expandtabํƒญ ๋Œ€์‹  ์ŠคํŽ˜์ด์Šค
set hlsearch๊ฒ€์ƒ‰์–ด ํ•˜์ด๋ผ์ดํŒ…
set ignorecase๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ ๊ฒ€์ƒ‰
set tabstop=4ํƒญ ๊ฐ„๊ฒฉ 4์นธ
set incsearch์ ์ง„์  ๊ฒ€์ƒ‰
syntax on๊ตฌ๋ฌธ ๊ฐ•์กฐ
filetype indent onํŒŒ์ผ ์œ ํ˜•๋ณ„ ๊ตฌ๋ฌธ ๊ฐ•์กฐ
set background=dark์ƒ‰์ƒ ํ…Œ๋งˆ ๋ฐฐ๊ฒฝ ์„ค์ •
colorscheme desert์ƒ‰์ƒ ํ…Œ๋งˆ
set backspace=eol,start,indent๋ฐฑ์ŠคํŽ˜์ด์Šค ํ—ˆ์šฉ ๋ฒ”์œ„ ์„ค์ •
set history=1000ํŽธ์ง‘ ๊ธฐ๋ก ๊ฐœ์ˆ˜ ์„ค์ •

๐Ÿงพ ๋ฌธ๋‹จ ๋“ค์—ฌ์“ฐ๊ธฐ

๋ช…๋ น์„ค๋ช…
> %์ค‘๊ด„ํ˜ธ ๊ตฌ๊ฐ„ ๋“ค์—ฌ์“ฐ๊ธฐ
> ib์†Œ๊ด„ํ˜ธ ๋‚ด๋ถ€ ๋“ค์—ฌ์“ฐ๊ธฐ
> atํƒœ๊ทธ ๊ตฌ๊ฐ„ ๋“ค์—ฌ์“ฐ๊ธฐ

๐Ÿ“‚ ์—ฌ๋Ÿฌ ํŒŒ์ผ ํŽธ์ง‘

๋‹จ์ถ•ํ‚ค๊ธฐ๋Šฅย 
<C-w> + x์ฐฝ ๊ต์ฒดย 
<C-w> + _๊ฐ€๋กœ ๋ถ„๋ฆฌ ์‹œ ํ™•๋Œ€ย 
<C-w> + | ์„ธ๋กœ ๋ถ„๋ฆฌ ์‹œ ํ™•๋Œ€ย 
<C-w> + =์ฐฝ ํฌ๊ธฐ ๊ท ๋“ฑ ์กฐ์ •ย 

โœจ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ

๊ธฐ๋ณธ ์ž๋™์™„์„ฑ

๋‹จ์ถ•ํ‚ค๊ธฐ๋Šฅ
<C-p> / <C-n>Vim ๊ธฐ๋ณธ ์ž๋™์™„์„ฑ (insert ๋ชจ๋“œ)
<C-x><C-l>๋ผ์ธ ๋‹จ์œ„ ์ž๋™์™„์„ฑ
<C-x><C-f>ํŒŒ์ผ๋ช… / ๊ฒฝ๋กœ ์ž๋™์™„์„ฑ

๐Ÿช„ Abbreviate (์ถ•์•ฝ์–ด)

์˜คํƒ€ ๊ต์ •, ์ž๋™์™„์„ฑ์— ํ™œ์šฉ ๊ฐ€๋Šฅ

๋ช…๋ น์ ์šฉ ๋ชจ๋“œ
abbrinsert + command
iabbrinsert ์ „์šฉ
cabbrcommand ์ „์šฉ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
" ์˜คํƒ€ ๊ต์ •
abbr consolee console
abbr coment comment

" ์ž๋™์™„์„ฑ
abbr cns console.log()
abbr cmt /* */

" <Esc> ํ™œ์šฉ ๋ณต๊ตฌ
abbr cmt /* */<Esc>hhi

" expr ํ™œ์šฉ ๋™์  ์ž๋™์™„์„ฑ
iabbr __email abcd@efgh.com
iabbr <expr> __time strftime("%Y-%m-%d %H:%M:%S")
iabbr <expr> __file expand('%:p')
iabbr <expr> __name expand('%')
iabbr <expr> __pwd expand('%:p:h')
iabbr <expr> __branch system("git rev-parse --abbrev-ref HEAD")

๐Ÿ“š ์ฐธ๊ณ : John Gribโ€™s Vim Auto Completion


Buffer & Window

1
2
:e! # ํ˜„์žฌ ๋ฒ„ํผ ๊ฐ•์ œ ์žฌ๋กœ๋“œ
:e # ํ˜„์žฌ ๋ฒ„ํผ ์žฌ๋กœ๋“œ
This post is licensed under CC BY 4.0 by the author.