Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimで開発とかしてみたい(PHP)

$
0
0

いつもIDE(NetBeans)で開発を行っていましたが、vimかっこいい、使えるようになりたいと思ったので、
とりあえずプラグイン入れてなんかそれっぽくできるようにしていった時の備忘録です。

ちなみに私のvimスキルは、入力とか移動とか検索くらいしかできない、まったくvimを使いこなせていない感じの人です。

vimのバージョンを8以上・luaオプション付きにする

プラグインによって上記条件を満たしていたほうが良い場合があるため

# とってくるsudo curl -L https://copr.fedorainfracloud.org/coprs/unixcommunity/vim/repo/epel-7/unixcommunity-vim-epel-7.repo -o /etc/yum.repos.d/unixcommunity-vim-epel-7.repo

# アップデート
yum update vim*# バージョン確認
vim --version# luaが有効か確認(-lua となっていたら無効、 +luaとなっていたら有効)
vim --version | grep lua

参考:CentOS 7 に vim 8 を導入する方法 : パパは家族の長男 ~都会暮らしを楽しく生きたい~

dein.vimインストール

プラグインマネージャーにdeinを使用する
* Shougo/dein.vim

# 任意のディレクトリで
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh

# インストールするディレクトリ作成(名前任意)mkdir-p ~/.vim/dein

# インストール# ここで出力されたスクリプトを、.vimrcに張り付け設定を記載する
sh ./installer.sh ~/.vim/dein

# これはもういらないので削除rm ./installer.sh

.vimrcを編集

先ほどdeinをインストールした際に出力されたものを、.vimrcに張り付けてここに使用したいプラグインを記載していく。
基本は出力されたものそのまま使用したが、以下だけ修正。

  • ホームディレクトリのパスを環境変数に変更
  • インストールされていないものは自動インストールされるようにコメントアウト外す
.vimrc
"dein Scripts-----------------------------if&compatible
  set nocompatible               " Be iMproved
endif" Required:set runtimepath+=$HOME/.vim/dein/repos/github.com/Shougo/dein.vim" Required:if dein#load_state('$HOME/.vim/dein')call dein#begin('$HOME/.vim/dein')" Let dein manage dein" Required:call dein#add('$HOME/.vim/dein/repos/github.com/Shougo/dein.vim')" 追加したいプラグインをここに記載" こんな感じで↓call dein#add('scrooloose/nerdtree')" Required:call dein#end()call dein#save_state()endif" Required:filetype plugin indent on
syntax enable

" インストールされていないものは自動インストールするif dein#check_install()call dein#install()endif"End dein Scripts-------------------------

とりあえず今はこれだけ覚えておく

プラグイン追加

call dein#add('scrooloose/nerdtree')

もし、「やっぱこれ使わない」と思ったら、これ消しちゃえば無効になる(インストールした本体削除したい場合は別途操作必要)

追加したプラグインをインストール

vimを起動すれば、勝手にインストールしてくれる。

これでプラグイン入れてく準備完了

よし、いろいろ入れていくぞ

先に、設定を終えた.vimrcはこちら

.vimrc

NerdTree

こちらの設定をほぼ全部真似させていただきました。
[Vim Plugin] NERDTreeのオススメ設定とコマンド一覧 - KAMIYAのアレ

使用方法はまだよく分かっていないので、使いながら覚えていく

閉じ括弧補完

lexima.gif

HTML関連

閉じタグ補完

closetag.gif

.vimrc
letg:closetag_filenames='*.html,*.xhtml,*.php'letg:closetag_xhtml_filenames='*.xhtml,*.jsx'letg:closetag_filetypes='html,xhtml,php'letg:closetag_xhtml_filetypes='xhtml,jsx'letg:closetag_emptyTags_caseSensitive=1letg:closetag_shortcut='>'letg:closetag_close_shortcut='<leader>>'

>を打ったら閉じタグを自動挿入されるが、1回消したりなんなりした時のために
</と打ったら対応する閉じタグを自動挿入してくれるっぽい設定も書いとく

.vimrc
augroup MyXML
  autocmd!
  autocmd Filetype xml inoremap <buffer></ </<C-x><C-o>
  autocmd Filetype html inoremap <buffer></ </<C-x><C-o>
  autocmd Filetype php inoremap <buffer></ </<C-x><C-o>
augroup END

対応するタグをハイライト

tagmatch.gif

.vimrc
"オプション機能ONにするletg:mta_use_matchparen_group=1"使用するファイルタイプ(phpを追加)letg:mta_filetypes={    \'html':1,    \'xhtml':1,    \'xml':1,    \'jinja':1,    \'php':1,    \}

コード補完

hokan.gif

PHPの辞書ファイル作成

# 辞書ファイルを置いとく任意のフォルダ作成mkdir .vim/dictionary
# 作成
php -r'$f=get_defined_functions();echo join("\n",$f["internal"]);' | sort> .vim/dictionary/php.dict

参考:【vim】neobundle導入&neocomplcacheでPHP補完 - とあるプログラマの備忘録

または、スニペットファイルを作成

こちらのファイルを使用させていただいています。
https://qiita.com/tekkoc/items/8897cdf378305c4e547d

以下設定で辞書ファイルもスニペットファイルも指定していますが、
スニペットファイル指定しているなら辞書ファイルいらなそうだけど備忘録のために記載しています。

.vimrc
"----------------------------------------------------------"  neosnippet-snippets"----------------------------------------------------------" Plugin key-mappings." Note: It must be "imap" and "smap".  It uses <Plug> mappings." <C-k>で、TARGETのところへジャンプ
imap <C-k><Plug>(neosnippet_expand_or_jump)smap<C-k><Plug>(neosnippet_expand_or_jump)
xmap <C-k><Plug>(neosnippet_expand_target)" SuperTab like snippets behavior." Note: It must be "imap" and "smap".  It uses <Plug> mappings."imap <expr><TAB>" \ pumvisible() ? "\<C-n>" :" \ neosnippet#expandable_or_jumpable() ?" \    "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"smap<expr><TAB> neosnippet#expandable_or_jumpable() ?
\"\<Plug>(neosnippet_expand_or_jump)":"\<TAB>"" 独自スニペットファイルのあるディレクトリを指定letg:neosnippet#enable_snipmate_compatibility =1letg:neosnippet#snippets_directory=$HOME.'/.vim/dein/vim-neosnippets/'" For conceal markers.if has('conceal')set conceallevel=2 concealcursor=niv
endif"----------------------------------------------------------"  neocomplete.vim"----------------------------------------------------------"Note: This option must be set in .vimrc(_vimrc).  NOT IN .gvimrc(_gvimrc)!" Disable AutoComplPop.letg:acp_enableAtStartup=0" Use neocomplete.letg:neocomplete#enable_at_startup =1" Use smartcase.letg:neocomplete#enable_smart_case =1" Set minimum syntax keyword length.letg:neocomplete#sources#syntax#min_keyword_length =3" 辞書ファイルを設定(phpを追加)letg:neocomplete#sources#dictionary#dictionaries ={    \'default':'',    \'php': $HOME.'/.vim/dein/php.dict'    \}" Define keyword.if!exists('g:neocomplete#keyword_patterns')letg:neocomplete#keyword_patterns ={}endifletg:neocomplete#keyword_patterns['default']='\h\w*'" Plugin key-mappings.
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#complete_common_string()" Recommended key-mappings." <CR>: close popup and save indent.
inoremap <silent><CR><C-r>=<SID>my_cr_function()<CR>function!s:my_cr_function()return(pumvisible() ? "\<C-y>":"")."\<CR>"" For no inserting <CR> key."return pumvisible() ? "\<C-y>" : "\<CR>"endfunction" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>":"\<TAB>"" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"" Close popup by <Space>."inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>"" AutoComplPop like behavior."let g:neocomplete#enable_auto_select = 1" Shell like behavior(not recommended)."set completeopt+=longest"let g:neocomplete#enable_auto_select = 1"let g:neocomplete#disable_auto_complete = 1"inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP

" Enable heavy omni completion.if!exists('g:neocomplete#sources#omni#input_patterns')letg:neocomplete#sources#omni#input_patterns ={}endifletg:neocomplete#sources#omni#input_patterns.php ='[^. \t]->\h\w*\|\h\w*::'

設定はほとんど公式READMEをコピペです。辞書ファイルのパス・スニペットファイルのパスは設定して、
必要なさそうなのは消し、よく分からないものは残しました。

Git関連

HEADとの差分があるところを分かるようにする

image.png

.vimrc
" 記号更新のタイミングを早くするset updatetime=250" 行に対するハイライトを有効にする場合はこちらをletg:gitgutter_highlight_lines=1

参考:Vimメモ : vim-gitgutterで差分を左端に表示する - もた日記

いろいろできるやつ

image.png
これは:Gdiffで差分を確認したもの。vim上でgitのあれやこれやができる

参考:VimmerなGit使いはfugitive.vimを今すぐ入れたほうがいい - SELECT * FROM life;

その他

自動インデントを外したい

dein.vim内の、以下をoffにする(onで元通り)

.vimrc
" Required:filetype plugin indent off

とりあえず終わる

まだまだいろいろ足りないので、随時直していきたい


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>