◎ 概要
gvim を使っていて便利だと思うものを記事します。
gvim をこれから使ってみよう!という人の参考になれば。
lightline と cica フォントと vim-devicons を入れるだけで、なんとなくかっこいい感じになります。
gvim じゃなくて nvim 使う場合でも多少は参考になるのでは、と思います。
◎ プラグイン
プラグイン | URL | 概要 |
---|---|---|
プラグイン管理 | dein | NeoBundle でも良いし他のパッケージ管理でも良い。最近メジャーなのが dein.vim |
非同期処理 | vimproc | 取り敢えず入れておく。いろんなプラグインで使用する。 |
VIM Shell | vimshell | 取り敢えず入れておく。いろんなプラグインで使用する。 |
インクリメンタル検索 | fzf.vim | 最近流行りの fzf で vim をモダンに使う。 |
統合ユーザインターフェース | Unite | 色々な機能のインターフェースとして使用する。 |
フォント | プログラミング用日本語等幅フォント Cica | プログラミング用フォントなので単純に見やすいのでお薦め。 |
ステータスライン | Lightline | ステータスラインをきらびやかにする。 |
アイコン | devicons | アイコンを表示する。 |
カラースキーム | morokai | カラースキーム「morokai」 |
フルスクリーン | vullScreen | フルスクリーン表示する。 |
インデントをハイライトする | vim-indent-guides | インデントを可視化する。 |
git ラッパープラグイン | vim-fugitive | git のラッパー |
git 変更行視覚化 | vim-gitgutter | git の変更点を表示する。 |
非同期コードチェック | ALE | シンタックスチェックツール |
括弧自動補完 | lexima | 括弧を自動で保管する。 |
TOML | vim-toml | TOML のシンタックスハイライトする。 |
PHP 用補完 | neocomplete-php | PHP の関数名や変数の補完する。 |
HTML | emmet-vim | HTML のシンタックスと補完をする。 |
Snippets | neosnippet | スニペットを管理する |
Snippets | neosnippet-snippets | スニペットを管理する。 |
Ref | vim-ref | PHP Manual を表示する為に使用する。 |
置換 | traces.vim | 結果を確認してから置換する。 |
C 言語用コンパイラとの連携 | vim-clang | C 言語、C++ の補完をする為に使用する。 |
Python 用補完 | jedi-vim | Python の関数名や変数の補完する。 |
チートシート | vim-cheatsheet | チートシートを表示する為のプラグイン。 |
メモ | memolist.vim | メモを作成する為のプラグイン。 |
ワークスペース | vim-workspace | セッションの状態をワークスペースとして保存し、次に vim を起動した際に前回のウィンドウの状態を再現する。 |
自動実行 | vim-quickrun | バッファ上のプログラムを実行する。 |
◎ Cheat Sheet
▽ Aliaces
※ プラグインのインストールと設定が必要
コマンド | 説明 |
---|---|
:Uu |
Unite buffer |
:Ub |
Unite bookmark |
:Uf |
Unite file |
:Uc |
Unite file (現在開いているファイルのディレクトリ) |
:Cl |
閉じる |
:Ss |
ウィンドウ分割(横) |
:Sv |
ウィンドウ分割(縦) |
:Rt |
Twitter タイムラインリフレッシュ |
:Pm |
PHP Manual 表示 |
▽ Keymap
※ プラグインのインストールと設定が必要
コマンド | 説明 |
---|---|
<silent> tc |
新規タブページ |
<silent> tn |
次のタブページに移動 |
<silent> tp |
前のタブページに移動 |
▽ プラグインコマンド
※ 設定が必要
コマンド | 説明 |
---|---|
:Files |
FZF files ファイル全文検索 |
:%s;<検索文字列>;<置換文字列>; |
結果を確認してから置換する |
:PosttoTwitter |
Twitter に POST する |
:FriendsTwitter |
Twitter のタイムラインを表示する |
:VullScreen |
フルスクリーン化 |
:HonyakuEJ |
翻訳(英語⇒日本語 Translate) |
:HonyakuJE |
翻訳(日本語⇒英語 Translate) |
:Gwrite |
Git ステージにする |
:Gcommit |
Git コミット |
:Gpush |
Git push |
:Gpull |
Git pull |
:Gblame |
Git blame |
:vertical diffsplit <ファイル> |
現在開いているファイルと指定したファイルで比較する |
▽ vim オプション
コマンド | 説明 |
---|---|
vim -O2 file1 file2 |
垂直分割で開く |
vim -o2 file1 file2 |
水平分割開く |
vim +/gorilla file |
検索かけた状態でファイル開く |
vim -R file |
読み取り専用状態でファイルを開く |
vim -d file1 file2 |
差分確認 |
vim -b gorilla.bin |
バイナリ編集(開いた後に :%!xxd) |
▽ その他
コマンド | 説明 |
---|---|
Control + Insert |
クリップボードにコピー |
Shift + Insert |
クリップボードからペースト |
◎ パッケージ管理
プラグインをパッケージ管理をします。
▽ dein.vim インストール
mkdir -p $HOME/.cache/dein && cd $_;
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh;
sh ./installer.sh $HOME/.cache/dein;
▽ dein.vim セットアップ
dein.vim 自体の設定
"===============================================================================
" dein.vim
"===============================================================================
if &compatible
set nocompatible " Be iMproved
endif
" Required:
set runtimepath+=$HOME/.cache/dein/repos/github.com/Shougo/dein.vim
" Required:
if dein#load_state('$HOME/.cache/dein')
call dein#begin('$HOME/.cache/dein')
" Let dein manage dein
" Required:
call dein#add('$HOME/.cache/dein/repos/github.com/Shougo/dein.vim')
"-- tomi settings
let s:toml_dir = $HOME . '/.vim/rc'
let s:toml = s:toml_dir . '/dein.toml'
let s:lazy_toml = s:toml_dir . '/dein_lazy.toml'
call dein#load_toml(s:toml, {'lazy': 0})
call dein#load_toml(s:lazy_toml, {'lazy': 1})
" Required:
call dein#end()
call dein#save_state()
endif
" Required:
filetype plugin indent on
syntax enable
" If you want to install not installed plugins on startup.
if dein#check_install()
call dein#install()
endif
let s:removed_plugins = dein#check_clean()
if len(s:removed_plugins) > 0
call map(s:removed_plugins, "delete(v:val, 'rf')")
call dein#recache_runtimepath()
endif
"===============================================================================
dein.vim 用ディレクトリ作成
mkdir -p $HOME/.vim/rc;
dein.vimで管理するプラグインの設定
- $HOME/.vim/rc/dein.toml に記載する
- 参考:Git/dein.toml
◎ 開発環境構築
vim で開発環境を整えます。
dein で各プラグインのインストールと設定を行います。
▽ リンター
[[plugins]]
repo = 'w0rp/ale'
hook_add = '''
let g:ale_sign_column_always = 1
let g:ale_lint_on_enter = 1
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 1
let g:ale_open_list = 1
let g:ale_keep_list_window_open = 0
let g:ale_sign_error = 'E'
let g:ale_sign_warning = 'W'
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %code: %%s [%severity%]'
'''
▽ インデント設定
[[plugins]]
repo = 'nathanaelkane/vim-indent-guides'
hook_add = '''
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_start_level = 1
let g:indent_guides_guide_size = 1
'''
▽ スニペット
[[plugins]]
repo = 'Shougo/neosnippet'
hook_add = '''
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
'''
[[plugins]]
repo = 'Shougo/neosnippet-snippets'
hook_add = '''
let g:neosnippet#snippets_directory = [
\ $HOME . '/.cache/dein/repos/github.com/Shougo/neosnippet-snippets/neosnippets/',
\ $HOME . '/.vim/snippets/',
\]
'''
▽ タブ補完
[[plugins]]
repo = 'ervandew/supertab'
▽ 補完
[[plugins]]
repo = 'Shougo/neocomplete.vim'
hook_add = '''
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#sources#syntax#min_keyword_length = 3
'''
▽ 自動実行
[[plugins]]
repo = 'thinca/vim-quickrun'
hook_add = '''
let g:quickrun_no_default_key_mappings = 1
let g:quickrun_config = {
\ "_" : {
\ 'runner' : 'vimproc',
\ 'runner/vimproc/updatetime' : 40,
\ 'outputter' : 'error',
\ 'outputter/error/success' : 'buffer',
\ 'outputter/error/error' : 'quickfix',
\ 'outputter/buffer/split' : ':botright 8sp',
\}
\}
'''
▼ PHP
プラグインのインストール
#===============================================================================
# PHP Plugins
#===============================================================================
#-- 補完(PHP 用)
[[plugins]]
repo = 'violetyk/neocomplete-php.vim'
hook_add = '''
let g:neocomplete_php_locale = 'ja'
'''
#-------------------------------------------------------------------------------
#-- HTML
[[plugins]]
repo = 'mattn/emmet-vim'
#-------------------------------------------------------------------------------
#-- Ref
[[plugins]]
repo = 'thinca/vim-ref'
hook_add = '''
let g:ref_phpmanual_path = $HOME . '/.vim/php/php-chunked-xhtml'
'''
#-------------------------------------------------------------------------------
PHP マニュアルを vim から参照できるようにする
マニュアルの用意
mkdir -p $HOME/.vim/php && cd $_;
wget http://jp2.php.net/get/php_manual_en.tar.gz/from/jp.php.net/mirror;
tar zxvf php_manual_en.tar.gz
テキストブラウザのインストール
sudo apt install lynx;
使い方
:Ref phpmanual var_dump
補完(PHP)
neocomplete.vim に以下設定を追加
let g:neocomplete_php_locale = 'ja'
リンター設定
ALE に以下設定を追加
let g:ale_linters = {
\ 'php': ['phpcs','php','phpmd'],
\}
▼ C/C++
プラグインのインストール
#===============================================================================
# C Language Plugins
#===============================================================================
[[plugins]]
repo = 'justmao945/vim-clang'
hook_add = '''
let g:clang_auto = 0
let g:clang_complete_auto = 0
let g:clang_auto_select = 0
let g:clang_use_library = 1
let g:clang_c_completeopt = 'menuone'
let g:clang_cpp_completeopt = 'menuone'
let g:clang_exec = 'clang'
let g:clang_format_exec = 'clang-format'
let g:clang_c_options = '-std=c11'
let g:clang_cpp_options = '-std=c++1z -stdlib=libc++ -pedantic-errors'
'''
補完(C)
neocomplete.vim に以下設定を追加
if !exists('g:neocomplete#force_omni_input_patterns')
let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_overwrite_completefunc = 1
let g:neocomplete#force_omni_input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
let g:neocomplete#force_omni_input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
コンパイラやフォーマッタのインストール
sudo apt install clang clang-format
▼ Python
プラグインのインストール
#===============================================================================
# Python Plugins
#===============================================================================
[[plugins]]
repo = 'davidhalter/jedi-vim'
on_ft = 'python'
#-------------------------------------------------------------------------------
補完(Python)
neocomplete.vim に以下設定を追加
autocmd FileType python setlocal omnifunc=jedi#completions
let g:jedi#auto_vim_configuration = 0
if !exists('g:neocomplete#force_omni_input_patterns')
let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'
jedi のインストール
cd $HOME/.cache/dein/repos/github.com/davidhalter/jedi-vim;
git submodule update --init;
リンター設定
ALE に以下設定を追加
let g:ale_linters = {
\ 'python': ['flake8', 'mypy'],
\}
Flake8 等のインストール
sudo apt install flake8
▼ JavaScript
プラグインのインストール
#===============================================================================
# JavaScript Plugins
#===============================================================================
[[plugins]]
repo = 'billyvg/tigris.nvim'
on_ft = ['javascript', 'javascript.jsx']
hook_post_update = '''
let g:dein#plugin.build = './install.sh'
'''
hook_add = '''
let g:tigris#enabled = 1
let g:tigris#on_the_fly_enabled = 1
'''
#-------------------------------------------------------------------------------
リンター設定
ALE に以下設定を追加
let g:ale_linters = {
\ 'javascript': ['standard'],
\}
standard のインストール
sudo apt install nodejs;
sudo apt install npm;
sudo npm install standard --global;