사용하는 플러그인을 정리했다.
플러그인 목록
vim-fugitive
Git 명령을 사용한다.
nerdtree
텍스트 파일관리자다. :NERDTree
명령으로 시작하고 ?
키를 눌러서 사용법을 보고 q
키로 종료한다.
nerdcommenter
파일 종류에 맞추어 주석을 만들고 제거한다. 주석 마크 다음에 한 칸 띄우는 아래 설정은 꼭 필요하다.
let g:NERDSpaceDelims = 1
vim-easymotion
커서를 쉽게 이동한다.
vim-lightline
상태 라인을 보기 좋게 꾸며준다. 아래처럼 INSERT 가 중복 표시됨으로
아래 설정으로 Vim 내장 메시지를 감춘다.
set noshowmode
surround
짝을 지어 문자열 앞뒤로 문자를 추가하고 변경한다.
"a|pple" → cs"' → 'a|pple'
ctrlp.vim
파일 목록에서 파일을 선택한다.
vim-intent-object
vii
같은 명령으로 들여 쓰기 위치가 같은 문자열들을 블록으로 지정한다.
vim-visual-multi
여러 커서를 만들어 동시에 수정한다.
emmet-vim
HTML, CSS 코드를 빠르게 입력한다.
SirVer/ultisnips
짧은 문자열로 코드 조각을 입력할 수 있다. 확장 트리거 기본값인 <tab>
대신 <c-j>
를 사용하려면 아래 설정을 사용한다.
let g:UltiSnipsExpandTrigger="<C-j>"
chrisbra/matchit
Vim의 %
키 기능을 확장한다. if
, else
, endif
같은 단어를 짝지어 이동한다.
chrisbra/NrrwRgn
블록을 선택한 후 :NR
명령으로 별도의 윈도에서 편집한다.
MultipleSearch
검색 패턴으로 문자열에 색을 입힌다. 코드 분석할 때나 설명할 때 편하다.
auto-pairs
[ → []
이렇게 짝지어진 문자를 자동으로 입력한다.
VisIncr
세로 블록으로 감싸진 숫자, 문자, 요일 등을 증가하거나 줄인다.
speeddating
숫자를 증감하는 Vim의 <C-A>
, <C-X>
기능을 확장한다.
repeat.vim
surround, speeddating 플러그인을 위하여 vim의 .
(dot) 기능을 확장한다.
vim-tmux-navigator
tmux와 vim 같이 사용할 때 tmux panel과 vim window 구분 없이 이동한다.
indentLine
동일한 들여쓰기 위치에 세로 선을 보여준다.
csv.vim
CSV 파일을 편집한다.
vim-signify
git 수정 상태를 vim 신호 칼럼에 표시한다. 다른 VSC도 지원한다.
tabular
특정 문자 중심으로 정렬한다.
vim-lion
특정 문자 중심으로 정렬한다.
vim-argwrap
함수 인자, 배열, 객체 나열을 한 줄 혹은 여러 줄로 전환한다.
vim-slime
vim의 문자열을 tmux를 포함한 여러 터미널로 전달한다. 그 문자열을 터미널에서 수행한다.
ctrlsf.vim
여러 파일에서 문자열을 검색하고 동시에 수정한다.
vim-diminactive
커서가 없는 윈도 배경을 흐릿하게 한다.
vim-buffergator
버퍼를 목록으로 보여주고 이동한다.
vim-vertical-move
새로 블록 설정 시 빈 라인전에 멈춘다.
DrowIt
텍스트 박스, 원, 화살표를 그린다.
betterga
Vim의 ga 명령을 확장한다.
unicode.vim
유니코드를 검색하고 사용한다.
vim-rest-console
Vim을 REST 테스트를 위한 콘솔로 사용한다.
vim-dirdiff
두 폴더를 비교한다.
ferret
여러 파일을 검색하고 동시에 문자열을 변경한다.
sideways.vim
함수 인자, 배열, 객체의 각 항목의 위치를 좌우로 옮긴다. HTML 속성, CSS 속성도 좌우로 옮긴다.
vim-windowswap
버퍼 위치는 그대로 두고 내용만 변경한다.
vim-tmux
.tmux.conf 파일에 syntax highlighting을 제공하고 K
명령으로 tmux man 페이지를 보여준다.
trailertrash.vim
문자열 뒤에 공백을 지운다.
vim-javascript
Javascript 구문 파일이다. 일부 키워드를 지정한 심벌로 보여준다.
typescript-vim
Typescript 구문 파일이다.
vim-jsx-pretty
JSX 구문 파일이다.
vim-startify
최근 읽었던 파일 목록을 보고 이동할 수 있다. 설정하면 북마크 목록이나 세션 목록도 볼 수 있다.
coc.nvim
Vim을 vscode처럼 사용하도록 도와준다. 제안 목록을 <enter>로 선택하기 위해 아래 설정을 사용한다.
inoremap <expr> <cr> coc#pum#visible() ? coc#pum#confirm() : "\<CR>"
vim-bookmarks
이름을 붙여 파일 위치를 등록할 수 있고 목록을 선택하여 이동한다. 마크된 라인의 색상을 변경할 수 있다. 아래처럼 ma, mi 이런 식으로 키가 지정되어 있어서 Vim의 소문자 마크와 중복됨으로 키 재설정이 필요할 수 있다.
n mg <Plug>BookmarkMoveToLine
n mjj <Plug>BookmarkMoveDown
n mkk <Plug>BookmarkMoveUp
n mx <Plug>BookmarkClearAll
n mc <Plug>BookmarkClear
n mp <Plug>BookmarkPrev
n mn <Plug>BookmarkNext
n mi <Plug>BookmarkAnnotate
n mm <Plug>BookmarkToggle
n ma <Plug>BookmarkShowAll
vim-floaterm
Vim안에서 터미널을 팝업을 띄운다.
vifm.vim
Vifm을 호출한다.
플러그인 설치
플러그인 매니저를 사용하지 않고 Vim 8+ pacakges 기능을 사용하여 플러그인을 설치한다. 지정된 경로에 플러그인을 복사하는 방법이다. 아래 스크립트를 사용하여 한꺼번에 설치한다. 업데이트가 필요할 땐 ~/.vim/pack
폴더를 삭제하고 다시 스크립트를 수행하여 설치한다.
Vim 컴파일
우분투에서 apt로 vim을 설치했는데 clipboard 기능이 빠져있어서 https://www.vim.org/의 설명을 참조하여 vim을 컴파일했다.
git clone https://github.com/vim/vim.git
cd vim/src
make
git, make, gcc가 없다면 설치한다.
sudo apt install git make gcc build-essential
컴파일된 vim을 설치한다.
make install
Vim 버전과 기능 목록을 확인하고
/usr/local/bin/vim --version
vim --version | head -2
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Feb 10 2023 23:51:38)
Included patches: 1-1151
여러 vim이 설치되어 있다면 방금 설치한 버전에 별명을 붙인다.
alias vim='/usr/local/bin/vim'
.vimrc 설정파일이 필요하다. 아래 코드를 사용하여 다른 vimrc 파일을 같이 사용해도 좋다.
" ~/.vimrc
if filereadable(expand("~/.vim/other.vimrc"))
source ~/.vim/other.vimrc
endif
만약에 ultisnips 사용중에 아래 에러가 난다면 Vim에 파이썬 기능을 추가한다.
E319: Sorry, the command is not available in this version: py3 UltiSnips_Manager._track_change()
vim/src/Makefile 파일에서 아래 코드의 주석을 해제하고
CONF_OPT_PYTHON3 = --enable-python3interp=dynamic
파이썬 설치되었나 확인하고
python -V
Python 3.10.0
다시 컴파일한다.
make clean distclean
make