Vimメモ : Neovimで開発環境を段階的に構築する(7)コメントアウト、Undo、カーソル移動など
今回は開発するときにあると便利な比較的ユーザ数が多いプラグインを紹介していく。
コメントアウト
コメントアウトをサポートするプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
scrooloose/nerdcommenter | 3367 |
tpope/vim-commentary | 2588 |
tomtom/tcomment_vim | 1010 |
例えばvim-commentaryの場合は、gcc
と入力すると現在行をコメントアウトし、ビジュアルモードで行選択してからgc
と入力すると選択行をコメントアウトできる。そして、コメントアウトされた行に対して実行すればコメントアウトを解除できる。
Plug 'tpope/vim-commentary'
Undo
Undo操作をサポートするプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
sjl/gundo.vim | 1360 |
mbbill/undotree | 1280 |
例えばundotreeの場合は、:UndotreeToggle
コマンドを実行することで以下のようなUndo履歴が表示されるのでUndo/Redoが管理しやすくなる。
Plug 'mbbill/undotree' nmap <F5> :UndotreeToggle<CR>
カーソル移動
カーソル移動をサポートするプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
easymotion/vim-easymotion | 4498 |
justinmk/vim-sneak | 1556 |
例えばvim-easymotionの場合は、下記設定を追加することでs
キーの後に移動したい文字列の先頭2文字入力することで移動が可能になる。
Plug 'easymotion/vim-easymotion' nmap s <Plug>(easymotion-overwin-f2)
この場合、s
の後にfi
を入力すると赤字で候補キーが表示されるので、候補キーを入力することでその場所へカーソルが移動する(a
またはs
を入力)。なお、候補が1つしかない場合は候補キーは表示されずに直接カーソル移動する。
囲み文字の編集
囲み文字の編集をサポートするプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
tpope/vim-surround | 6980 |
machakann/vim-sandwich | 426 |
例えばvim-surroundの場合は、"Hello world!"
という文字列上でcs"'
を入力すると'Hello world!'
のように"
を'
に変更できる。
さらにds'
を入力するとHello world!
のように'
を削除できる。
また、矩形ビジュアルモードでHello world!
を選択した後でS"
を入力すると"Hello world!"
のように"
で囲むことができる。
Plug 'tpope/vim-surround'
なお、vim-surroundの操作を.
キーでリピートできるようにするにはvim-repeatを使用するとよい。
Repository | スター数 |
---|---|
tpope/vim-repeat | 1450 |
Plug 'tpope/vim-repeat'
自動で閉じ括弧
自動で閉じ括弧(引用符なども)を入力するプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
jiangmiao/auto-pairs | 2236 |
Raimondi/delimitMate | 1595 |
例えばauto-pairsの場合は、(
を入力すると自動で)
も入力されるようになる。
Plug 'jiangmiao/auto-pairs'
まとめ
今回の~/.config/nvim/init.vim
。
call plug#begin('~/.vim/plugged') Plug 'joshdick/onedark.vim' Plug 'itchyny/lightline.vim' Plug 'ntpeters/vim-better-whitespace' Plug 'Yggdroot/indentLine' Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'majutsushi/tagbar', { 'on': 'TagbarToggle' } Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' Plug 'airblade/vim-rooter' Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' Plug 'xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } Plug 'sheerun/vim-polyglot' Plug 'dense-analysis/ale' Plug 'SirVer/ultisnips' Plug 'honza/vim-snippets' Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'kassio/neoterm' Plug 'tpope/vim-commentary' Plug 'mbbill/undotree' Plug 'easymotion/vim-easymotion' Plug 'tpope/vim-surround' Plug 'tpope/vim-repeat' Plug 'jiangmiao/auto-pairs' call plug#end() set number set termguicolors " airblade/vim-gitgutter set updatetime=100 let g:python_host_prog = $HOME . '/.pyenv/versions/neovim2/bin/python' let g:python3_host_prog = $HOME . '/.pyenv/versions/neovim3/bin/python' " joshdick/onedark.vim colorscheme onedark " itchyny/lightline.vim let g:lightline = {'colorscheme': 'onedark'} " sheerun/vim-polyglot " let g:polyglot_disabled = ['csv'] " SirVer/ultisnips let g:UltiSnipsExpandTrigger='<c-j>' " dense-analysis/ale let g:ale_set_highlights = 0 let g:ale_linters = {'python': ['flake8']} let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' let g:ale_fixers = { \ '*': ['remove_trailing_lines', 'trim_whitespace'], \ 'python': ['black'], \ } " let g:ale_fix_on_save = 1 nmap <silent> <C-k> <Plug>(ale_previous_wrap) nmap <silent> <C-j> <Plug>(ale_next_wrap) " scrooloose/nerdtree nmap <C-e> :NERDTreeToggle<CR> " majutsushi/tagbar nmap <F8> :TagbarToggle<CR> " junegunn/fzf.vim nmap <C-p> :History<CR> " mbbill/undotree nmap <F5> :UndotreeToggle<CR> " easymotion/vim-easymotion nmap s <Plug>(easymotion-overwin-f2) " neoclide/coc.nvim inoremap <silent><expr> <TAB> \ pumvisible() ? "\<C-n>" : \ <SID>check_back_space() ? "\<TAB>" : \ coc#refresh() inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug>(coc-implementation) nmap <silent> gr <Plug>(coc-references) nnoremap <silent> K :call <SID>show_documentation()<CR> function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('<cword>') else call CocAction('doHover') endif endfunction " kassio/neoterm let g:neoterm_default_mod='belowright' let g:neoterm_size=10 let g:neoterm_autoscroll=1 tnoremap <silent> <C-w> <C-\><C-n><C-w> nnoremap <silent> <C-n> :TREPLSendLine<CR>j0 vnoremap <silent> <C-n> V:TREPLSendSelection<CR>'>j0
:CocConfig
の設定。
{ "diagnostic.enable": false, "python.linting.enabled": false, "python.jediPath": "~/.pyenv/versions/neovim3/lib/python3.7/site-packages/" }
- 作者: DrewNeil,新丈径
- 出版社/メーカー: 角川アスキー総合研究所
- 発売日: 2014/01/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る