4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vim 環境

Last updated at Posted at 2020-04-25

◎ 概要

gvim を使っていて便利だと思うものを記事します。
gvim をこれから使ってみよう!という人の参考になれば。
lightline と cica フォントと vim-devicons を入れるだけで、なんとなくかっこいい感じになります。
gvim じゃなくて nvim 使う場合でも多少は参考になるのでは、と思います。

Screenshot from 2020-04-25 19-14-38.png


◎ プラグイン

プラグイン 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で管理するプラグインの設定


◎ 開発環境構築

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;
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?