Vimメモ : Neovimで開発環境を段階的に構築する(6)プログラム実行
プログラム実行
プログラム実行をサポートするプラグインとしては下記が挙げられる。
Repository | スター数 |
---|---|
tpope/vim-dispatch | 1966 |
skywind3000/asyncrun.vim | 921 |
kassio/neoterm | 752 |
thinca/vim-quickrun | 614 |
Neovimでは:terminal
コマンドでターミナルエミュレータを起動できるので、:terminal
コマンドのラッパーであるneotermを試してみる。
Plug 'kassio/neoterm'
neotermでは:Tnew
コマンドで新しいターミナルエミュレータを起動でき、起動時の位置やサイズは下記オプションで設定できる。
let g:neoterm_default_mod='belowright' let g:neoterm_size=10
また、コマンド実行時に画面下部の実行結果が表示されるようにneoterm_autoscroll
と、C-w
でターミナル内の挿入モードを抜けてウィンドウ移動できるように設定を追加しておく。
let g:neoterm_autoscroll=1 tnoremap <silent> <C-w> <C-\><C-n><C-w>
例えば、:Tnew
を2回実行するとターミナルエミュレータが2つ起動し、それぞれにIDが割り当てられる。
neotermでは:T {command}
のようにしてコマンドを実行するが、:2T {command}
のようにIDを指定しての実行もできる(IDを指定しない場合は最後にアクティブになったターミナルエミュレータが対象になる)ので、:1T date
、:2T python %
を実行した結果は以下のようになる。
なお、毎回コマンドを入力するのが面倒であれば:Tmap python %
のように:Tmap
でコマンドを登録すると、,tt
で登録したコマンドを呼び出すことができる。
neotermではREPLでの実行もサポートしているので下記設定を追加すると、C-n
を押すことでノーマルモードでは現在行、ビジュアルモードでは選択している行の内容をREPLで実行できる。
サポートしているREPLはこのページを参照。
nnoremap <silent> <C-n> :TREPLSendLine<CR>j0 vnoremap <silent> <C-n> V:TREPLSendSelection<CR>'>j0
まとめ
今回の~/.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' 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> " 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件) を見る