Vim for <?PHP
About me김예솔 at NAVER Labs
XpressEngine Project Leader
#docker #php #hhvm #opensource #beer
What is VIM ?Vi IMprovedVersion 7.4.460 (Current)
Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.- http://www.vim.org
Why Vim ?가볍고, 빠르다
터미널에서 실행 가능
다양한 부가기능
Vim Script와 함께 강력한 기능
XE 사용자 대응이 편하다
KEYBOARD수 많은 단축키HARD TO LEARN
싫어하는 계기가 될 수도 ...
Goals4 어떤 활용이 가능한지4 Plugin 설치법4 vim script
My Case데스크탑을 ubuntu로...
Vim Cheat Sheet 출력
.vimrc 과 plugin 검색
훌륭한 멘토
Basic
Open & Save & Quit
$ vim ~/.vimrc
$ vim *.php
:e
:w :w!
:q :q!
Help:h {KEY WORD}
Move
h j k l
:줄 번호
첫 줄 - gg 또는 :1
마지막 줄 - G 또는 :$
Mode
Command Mode - esc
Bottom-line Mode - :
Insert Mode - i A o O I a
Mode
Visual Mode - v
Visual-Line Mode - Shift + v
Visual-Block Mode - CTRL + v
Copy & Paste
y yy Y
p P
Multiple Copies
" , 1 , y" , 2 , y
" , 1 , p" , 2 , p
:reg
Undo & Redou
CTRL + r
Auto-CompletionCTRL + n
Search
/{KEY WORD}
?{KEY WORD}
shift + 3
:%s/old/new/g
Windows Split
:sp :vs:sp {fimeName}
CTRL + w , w CTRL + w , 방향
VIM Plugins
Plugin Manager4 Vundlehttps://github.com/gmarik/Vundle.vim
4 NeoBundlehttps://github.com/Shougo/neobundle.vim
4 Pathogenhttps://github.com/tpope/vim-pathogen
...
Install Vundle
4 git clone
4 ~/.vimrc 추가
4 :so ~/.vimrc
4 :PluginInstall
Usage
:PluginSearch {KEY WORD}
:PluginList
:PluginInstall
:PluginClean
NERDTree파일과 디렉토리 네비게이터
4 Plugin 'The-NERD-tree' => ~/.vimrc 추가4 :so ~/.vimrc
4 :PluginInstall
4 :NERDTree
VIM + ctags코드를 분석하여 함수, 변수 등을 DB화이를 이용해 정의된 구현체로 이동 가능
코드 자동 완성에도 반영
Install
$ sudo yum -y install ctags
$ ctags -f .php.tags --languages=PHP -R
$ echo "set tags=.php.tags" >> ~/.vimrc
Usage
CTRL + ] : 구현체로 이동
CTRL + t : 돌아오기
Taglist코드 브라우져functions, classes, structures, enumerations, definitions 등을 보여주고 이동이 가능
Plugin 'taglist-plus'
:TList
PHP Syntax Check1. $ vim check.php
2. CTRL + Z
3. $ php -l check.php
4. fg
PHP Syntax Check:!php -l %
PHP Syntax Checknmap <leader>s :!clear && php -l %<CR>
"nmap" : 단축키 설정"<leader>s" : 단축키"<leader>" : prefix dafault \":!" shell script 실행"clear && php -l %" : shell script"%" : 현재 파일"<CR>" : 실행
PHPQAPHP quality checking tools
4 Syntax errors
4 Coding standard violations
4 Code coverage
https://github.com/joonty/vim-phpqa
Check Code Convension
https://github.com/squizlabs/PHP_CodeSniffer
$ composer global require "squizlabs/php_codesniffer=*"
or
$ pear install PHP_CodeSniffer
Phpunit
:!phpunit %
vimscript
phpcomplete-extended
Composer Project의 Auto complete
https://github.com/m2mdas/phpcomplete-extended
Etc
코드 정렬
gg=G
<< 5> visual mode
:set paste
Text-Object
dit - delete inner tagdib - delete inner '(' ')' blockdiB - delete inner '{' '}' block
dab, daB, dat, cib, ciB, cit
Multiple Cursors
https://github.com/terryma/vim-multiple-cursors
CTRL + n 커서 선택
CTRL + x 커서 건너뛰기
Jump
열었던 파일의 위치로 이동
CTRL + o
CTRL + i
:ju
Shell Script
1 에서 100 까지 입력
:r! for i in {1..100}; do echo $i; done:r! php -r 'foreach(range(1,100) as $i) echo $i,"\n";'
.vimrchttps://gist.github.com/ngleader/28fea0312c5086d3acb4
Thank you