💨
最近使って感動したvimプラグインとvimrcの公開!
かなり定まってきたため紹介します
僕のおすすめプラグインは以下の3つです
- yuttie/comfortable-motion.vim
- junegunn/fzf.vim
- easymotion/vim-easymotion
ぜひ使ってみてください
最後にvimrc公開しておきます。
もし気になる点などあれば教えて下さい待ってます
fzf, cocが少し起動だったり、動きが遅くて困っています
mkdir ~/.vim/plugged
mkdir ~/.vim/autoload/
"" ----------------------------------------
"" Plugin
"" ----------------------------------------
let s:plugdir = '~/.vim/plugged'
let s:plugfile = '~/.vim/autoload/plug.vim'
let s:plugurl = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
if empty(glob(s:plugfile))
silent !echo '[Downloading vim-plug] ...'
silent execute '!mkdir -p ' . s:vimdir . 'autoload'
if executable('curl')
silent execute '!curl -sLo ' . s:plugfile ' ' . s:plugurl
elseif executable('wget')
silent execute '!wget -q -O ' . s:plugfile ' ' . s:plugurl
else
silent !echo 'vim-plug failed: you need either wget or curl'
cquit
endif
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin(s:plugdir)
" タグ生成
Plug 'mattn/emmet-vim'
" カラーテーマ
Plug 'ayu-theme/ayu-vim'
Plug 'vim-airline/vim-airline'
" モーションなめらか化
Plug 'yuttie/comfortable-motion.vim'
" スペース可視化
Plug 'bronson/vim-trailing-whitespace'
" シンタックス/ colorを可視化
Plug 'sheerun/vim-polyglot'
Plug 'ap/vim-css-color'
Plug 'scrooloose/syntastic'
Plug 'jelera/vim-javascript-syntax'
" indents guides
Plug 'nathanaelkane/vim-indent-guides'
" カッコの自動補完/カッコつけたりする
Plug 'cohama/lexima.vim'
Plug 'machakann/vim-sandwich'
"gitをvim上で/ conflict解消 / git マーク
Plug 'tpope/vim-fugitive'
Plug 'rhysd/conflict-marker.vim'
Plug 'airblade/vim-gitgutter'
" 最強補完と補完と情報表示
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
" fzf
Plug 'junegunn/fzf.vim' | Plug 'junegunn/fzf', {'do': { -> fzf#install() }}
" 初期画面
Plug 'mhinz/vim-startify'
" twitter
Plug 'twitvim/twitvim'
" マークダウン
Plug 'iamcco/mathjax-support-for-mkdp'
Plug 'iamcco/markdown-preview.vim'
" go
Plug 'fatih/vim-go'
"移動最強
Plug 'easymotion/vim-easymotion'
"snippet
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
call plug#end()
runtime! config/*.vim
"" ----------------------------------------
"" Option
"" ----------------------------------------
set number
" 検索でカレント以下にする
set path+=$PWD/**
" 編集中でもファイルを開けるように
set hidden
" 他で編集したファイルを自動で再読み込み
set autoread
" スクロール時の余白行数
set scrolloff=5
set sidescrolloff=6
" バックスペースでなんでも消せるように
set backspace=indent,eol,start
" テキスト整形オプション
set formatoptions=lmq
autocmd Filetype * setlocal formatoptions-=ro
" ビープ無効
set visualbell t_vb=
" 現在のディレクトリから開始
set browsedir=buffer
" カーソルを行をまたいで移動
"set whichwrap=b,s,h,l,<,>,[,]
" コマンドをステータスに表示
set showcmd
" 現在のモードを非表示
set noshowmode
" viminfoの設定
set viminfo='50,<1000,s100,\"50
" モードラインを無効
set modelines=0
" タイトルを変更させない
set notitle
" コマンドモードで補完を使用
set wildmode=longest:full,full
set wildmenu
set wildignorecase
" スワップファイルを作らない
"set noswapfile
" バックアップを作成しない
"set nobackup
" dont make undo file
" set noundofile
" swpファイル出力先
set directory=~/.vimfile/
" バックアップファイル出力先
set backupdir=~/.vimfile/
" undoファイル出力先
set undodir=~/.vimfile/
" ルーラーを表示
set ruler
" 不可視文字を表示
set list
" 不可視文字の設定
set listchars=tab:▹\ ,trail:-,extends:»,precedes:«,eol:\ ,nbsp:%
" 開始時の挨拶を表示しない
set shortmess+=I
" 検索ループ時のメッセージを表示しない
set shortmess+=s
" カレント行のハイライト
"set cursorline
" 対応する括弧をハイライト表示する
set showmatch
" 括弧のハイライト表示の秒数を設定
set matchtime=3
" コマンド実行中は再描画しない
set lazyredraw
" 高速ターミナル接続を行う
set ttyfast
" tabの幅
set tabstop=2
" tabをスペースにする
set expandtab
" スマートインデント
set smartindent
" オートインデント
set autoindent
" キーボードから入力した場合のtabの幅
set softtabstop=2
" 自動で挿入/削除されるインデントの量
set shiftwidth=2
" 折りたたみ
set foldmethod=marker
set foldlevel=1
set foldcolumn=0
" 検索で大文字小文字を区別しない
set ignorecase
" 検索文字に大文字があるときは大文字小文字を区別する
set smartcase
" インクリメンタルサーチ
set incsearch
" 検索文字列をハイライト表示
set hlsearch
set modifiable
" grep
if has('win32')
set grepprg=jvgrep
endif
" タグファイルを指定
set tags+=.tags,./.tags
" 補完時に1行まるごと補完
set showfulltag
" タグから補完リストに追加
set wildoptions=tagfile
" 文字コード関係
set fileencoding=utf-8 fileencodings=utf-8,cp932,euc-jp,iso-20220-jp,default,latin,sjis
set fileformats=unix,dos,mac
" undofile
set undofile
" タブライン表示
set showtabline=2
"bomb作らない
set nobomb
"キーをspaceに
let mapleader="\<Space>"
"ステータス常時見せる
set laststatus=0
set statusline=%F " ファイル名表示
set statusline+=%m " 変更のチェック表示
set statusline+=%r " 読み込み専用かどうか表示
set statusline+=%h " ヘルプページなら[HELP]と表示
set statusline+=%w\ " プレビューウインドウなら[Prevew]と表示
set rulerformat=%40(%1*%=%l,%-(%c%V%)\ %=%t%)%*
" ピープ音停止
set noerrorbells visualbell t_vb=
"" ----------------------------------------
"" Plugin
"" ----------------------------------------
"-------------------------------------------------------------------------------
" コマンド ノーマルモード 挿入モード コマンドラインモード ビジュアルモード
" map/noremap @ - - @
" nmap/nnoremap @ - - -
" imap/inoremap - @ - -
" cmap/cnoremap - - @ -
" vmap/vnoremap - - - @
" map!/noremap! - @ @ -
"-------------------------------------------------------------------------------
""let mapleader="\<Space>"
"" normal モード
" Shift + 矢印でウィンドウサイズを変更
" nnoremap <S-Left> <C-w><
" nnoremap <S-Right> <C-w>>
" nnoremap <S-Up> <C-w>-
" nnoremap <S-Down> <C-w>+
" nnoremap tig :tabnew<CR>:term<CR>i tig<CR>
" " 行番号の相対表示:絶対表示の切り替え
" nnoremap <F3> :<C-u>setlocal relativenumber!<CR>
" split
" nnoremap <Space>s :<C-u>new<CR>
" nnoremap <Space>v :<C-u>vnew<CR>
" 移動を直感的に
nnoremap j gj
nnoremap k gk
" Sft + y => yunk to EOL
" nmap <S-h> 15<Left>
" ターミナル
" nn <Leader>term :split<CR>:terminal<CR>
"" insertモード
"" terminalモード
" <ESC>: terminalモードからコマンドモードに変更
"tnoremap <silent> <ESC> <C-\><C-n>
" 無効化
nnoremap <C-j> j
"" ----------------------------------------
"" Cloer
"" ----------------------------------------
"配色設定
let ayucolor='dark' | colo ayu
set termguicolors
syntax on
"配色・ハイライト設定
hi Comment ctermfg=239
hi Number ctermfg=09
hi LineNr ctermfg=07
hi Directory ctermfg=118
hi RubyInstanceVariable ctermfg=208
hi htmlTag ctermfg=15
hi htmlEndTag ctermfg=15
hi Search term=reverse ctermfg=black ctermbg=248
"補完の配色
hi Pmenu ctermbg=239
hi PmenuSel ctermbg=6
hi PMenuSbar ctermbg=239
"全角スペースをハイライト表示
function! ZenkakuSpace()
hi ZenkakuSpace cterm=reverse ctermfg=DarkMagenta gui=reverse guifg=DarkMagenta
endfunction
if has('syntax')
augroup ZenkakuSpace
autocmd!
autocmd ColorScheme * call ZenkakuSpace()
autocmd VimEnter,WinEnter * match ZenkakuSpace / /
augroup END
call ZenkakuSpace()
endif
"" ----------------------------------------
"" PluginSetting
"" ----------------------------------------
"" ========== VimPlug ==========
nn <Leader>clean :PlugClean<CR>
nn <Leader>install :PlugInstall<CR>
nn <Leader>update :PlugUpgrade \| PlugUpdate<CR>
"" ========== Fzf ==========
" nn <Leader>rg :call Rg()<CR>
" let g:fzf_layout={'right': '~50%'}
" com! -bang -nargs=* History call fzf#vim#history(fzf#vim#with_preview('down:50%'))
" com! -bang -nargs=? -complete=dir Files call fzf#vim#files(<q-args>, fzf#vim#with_preview('down:50%'), <bang>0)
" fun! Rg()
" let string=input('Search String: ')
" call fzf#run(fzf#wrap({
" \ 'source': 'rg -lin ' . string,
" \ 'options': '--preview-window bottom:50% --preview "rg -in --color=always ' . string . ' {}"'
" \ }))
" endfun
"
"
let g:fzf_buffers_jump = 1
command! -bang -nargs=? -complete=dir Files
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview('right:50%', 'ctrl-p'), <bang>0)
nnoremap <Space>fi :Files<CR>
nnoremap <Space>hist :History<CR>
nnoremap <Space>b :Buffers<CR>
nnoremap <Space>l :BLines<CR>
nnoremap <Space>gf :GFiles<CR>
nnoremap <Space>gs :GFiles?<CR>
nnoremap <Space>gl :BCommits<CR>
nnoremap <Space>gla :Commits<CR>
command! -bang -nargs=? -complete=dir GFiles
\ call fzf#vim#gitfiles(<q-args>, fzf#vim#with_preview(), <bang>0)
nnoremap <C-s> :GFiles?<CR>
command! -bang -nargs=* Ag
\ call fzf#vim#ag(<q-args>,
\ <bang>0 ? fzf#vim#with_preview('up:60%')
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
\ <bang>0)
nnoremap <C-g> :Ag<Space>
"" ========== coc ==========
let g:coc_global_extensions = [
\ 'coc-json'
\, 'coc-html'
\, 'coc-css'
\, 'coc-tsserver'
\, 'coc-snippets'
\, 'coc-go'
\, 'coc-phpls'
\ ]
"スペースhでHover
nmap <silent> <space>hint :<C-u>call CocAction('doHover')<cr>
"スペースdfでDefinition
nmap <silent> <space>df <Plug>(coc-definition)
"スペースrfでReferences
nmap <silent> <space>rf <Plug>(coc-references)
"スペースrnでRename
nmap <silent> <space>rn <Plug>(coc-rename)
"スペースfmtでFormat
nmap <silent> <space>fmt <Plug>(coc-format)
"" ========== Emmet ==========
let g:user_emmet_settings = {
\ 'typescript' : { 'extends' : 'jsx' },
\ 'javascript.jsx' : { 'extends' : 'jsx' }
\ }
"" ========== vim-airline ==========
" Smarter tab line有効化
let g:airline#extensions#tabline#enabled = 1
" powerline font入れないと若干ダサい
let g:airline_powerline_fonts = 0
"" ========== vim-fugitive ==========
"set diffopt+=vertical
nn <Leader>gd :Gdiff<CR>
nn <Leader>ga :Gwrite<CR>
nn <Leader>gb :Gblame<CR>
nn <Leader>gs :Gstatus<CR>
nn <Leader>du :diffupdate<CR>
nn <Leader>gm :Gdiffsplit!<CR>
nn <Leader>dp :diffput 1 \| diffupdate<CR>
nn <Leader>dgl :diffget //2 \| diffupdate<CR>
nn <Leader>dgr :diffget //3 \| diffupdate<CR>
"" ========== ConflictMarker ==========
hi ConflictMarkerEnd guibg=#2f628e
hi ConflictMarkerOurs guibg=#2e5049
hi ConflictMarkerBegin guibg=#2f7366
hi ConflictMarkerTheirs guibg=#344f69
hi ConflictMarkerCommonAncestorsHunk guibg=#754a81
let g:conflict_marker_end = '^>>>>>>> .*$'
let g:conflict_marker_begin = '^<<<<<<< .*$'
"" ========== Vim-trailing-space ==========
nn <Leader>trim :FixWhitespace<CR>
let g:comfortable_motion_scroll_down_key = "j"
let g:comfortable_motion_scroll_up_key = "k"
let g:comfortable_motion_friction = 0.0
let g:comfortable_motion_air_drag = 4.0
"" ========== vim-startify ==========
let g:startify_files_number = 5
let g:startify_list_order = [
\ ['♻ 最近使ったファイル:'],
\ 'files',
\ ['♲ 最近使ったファイル(カレントディレクトリ下):'],
\ 'dir',
\ ['⚑ sessions:'],
\ 'sessions',
\ ['☺ bookmark:'],
\ 'bookmarks',
\ ]
" let g:startify_bookmarks = ["~/.vim/config/plug.rc.vim", "~/.vimrc", "~/.zshrc", "~/.vim/config/keymap.rc.vim", "~/.vim/config/options.rc.vim"]
" ASCII ARTを真ん中寄せする
function! s:center(lines) abort
let longest_line = max(map(copy(a:lines), 'strwidth(v:val)'))
let centered_lines = map(copy(a:lines),
\ 'repeat(" ", (&columns / 2) - (longest_line / 2)) . v:val')
return centered_lines
endfunction
let g:startify_custom_header = s:center([
\ 'もっとはやく!!!!!!!!!!!',
\ ])
" twivim
let twitvim_browser_cmd = 'open' " for Mac
let twitvim_force_ssl = 1
let twitvim_count = 40
nnoremap ,tp :<C-u>PosttoTwitter<CR>
nnoremap ,tf :<C-u>FriendsTwitter<CR><C-w>k
nnoremap ,tr :<C-u>RepliesTwitter<CR><C-w>k
nnoremap ,tn :<C-u>NextTwitter<CR>
nnoremap ,tb :<C-u>PreviousTwitter<CR>
autocmd FileType twitvim call s:twitvim_my_settings()
function! s:twitvim_my_settings()
set nowrap
endfunction
" easy motion
map <Leader> <Plug>(easymotion-prefix)
let g:EasyMotion_do_mapping = 0 " Disable default mappings
nmap <Leader>s <Plug>(easymotion-overwin-f2)
" Turn on case insensitive feature
let g:EasyMotion_smartcase = 1
" JK motions: Line motions
map <Leader>j <Plug>(easymotion-j)
map <Leader>k <Plug>(easymotion-k)
"syntax
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_error_symbol='✗'
let g:syntastic_warning_symbol='⚠'
let g:syntastic_style_error_symbol = '✗'
let g:syntastic_style_warning_symbol = '⚠'
" go-vim
let g:go_hi_functions = 1
let g:go_hi_methods = 1
let g:go_hi_structs = 1
set runtimepath+=/usr/local/go/misc/vim
" netrw.vim
"ls -alな表示
let g:netrw_liststyle=3
let g:netrw_altv = 1
let g:netrw_preview=1
" git guitter
nmap ]c <Plug>(GitGutterNextHunk)
nmap [c <Plug>(GitGutterPrevHunk)
let g:gitgutter_sign_added = '○'
let g:gitgutter_sign_modified = '△'
let g:gitgutter_sign_removed = '☓'
set updatetime=250
let g:gitgutter_max_signs = 500
let g:gitgutter_map_keys = 0
let g:gitgutter_override_sign_column_hi = 0
" vim-indent-guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_auto_colors = 0
let g:indent_guides_guide_size = 1
" 奇数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=#666666 ctermbg=235
" 偶数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=#2c2c2c ctermbg=240
"ultisnip
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
let g:UltiSnipsEditSplit="vertical"
let g:UltiSnipsSnippetsDir = '~/.vim/snippets'
set runtimepath+=~/.vim/snippets
"" ----------------------------------------
"" my function
"" ----------------------------------------
"space + gtで tag作成
"function! s:generateCtags()
" let s:options = readfile('~/.tags/') "ctagsの設定ファイルへのパス
" let s:command = [
" \'ctags',
" \'-R',
" \'-f',
" \'~/.tags/.tags', "tagsファイルへのパス
" \]
" let s:command += s:options
" call job_start(s:command)
"endfunction
"nnoremap <silent> <Leader>gt :<C-u>call <SID>generateCtags()<CR>
let g:pid = getpid()
let g:tag_file_path = "/tmp/" . g:pid . "_tags"
function! _CtagsUpdate()
exe '!ctags -R -f '.g:tag_file_path.' `pwd` &'
exe 'set tags='.g:tag_file_path
endfunction
command! CtagsUpdate call _CtagsUpdate()
function! _CtagsRemove()
exe '!rm '.g:tag_file_path
endfunction
command! CtagsRemove call _CtagsRemove()
let current_path = expand("%:p")
let match_idx = match(current_path, "/dev")
if match_idx != -1
autocmd VimEnter * silent! :CtagsUpdate
autocmd BufWrite * silent! :CtagsUpdate
autocmd VimLeave * silent! :CtagsRemove
endif
"augroup ctags
" autocmd!
" autocmd BufWritePost * silent !ctags -R -f .tags
"augroup END
Discussion
Lokaltog/vim-easymotion は easymotion/vim-easymotion に移行しています。
リダイレクトされていると思いますので、実際に使われているのはこちらになっていると思います。
ありがとうございます..!!!
知らなかったです。すぐに修正致します!
教えていただいてありがとうございます!