はじめに
私が大学生になり学校の授業でC言語のプログラミングを学んでいますが、友達にvimをすすめたが複数部分で引っかかってしまったため引っかかったところと簡単な対策を書いていくために書いています。
tl;dr
最後のコピペって完成!
環境
- Windows 10
- Visual Studio 2019
- neovim,v0.4.2
- clang,v9.0.0
- cmake,v3.14.3
- python3.8.0
- git
目標
開発者用コマンドプロンプト内でC言語を書いてサクッと実行する
必要なソフトのインストール
1 言わずもがななVisual Studio
2 他のソフトをまとめてインストールするためchocolateyをインストールする
Chocolatey
Chocolateyを使った環境構築の時のメモ
PowerShellを管理者権限で起動し下記のコマンドを入力する
PowerShellを管理者権限で起動するにはWindowsキーとxキーを同時に押しAを押すとできる
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
これの処理が終わるとPowerShell上でchoco install 〇〇
などと言ったコマンドで簡単にソフトウェアをインストールすることができる
choco install python3 neovim cmake llvm git -y
このコマンドで必要なソフトのインストールが終わるのでPowerShellは終了しよう
neovimの文字コード設定
此処から先は先程インストールしたVisual Studio内にはいっているDeveloper Command Prompt for VS 2019を利用する
スタートメニュー内のVisual Studio 2019のファイル内にあるためこれを選択してほしい
neovimは基本的にUTF-8という文字コードを使用するがWindows上ではべつのcp932という文字コードを使用するためそのままでは文字化けが発生してしまうなので
neovimでもcp932という設定にする必要がある
他の様々なサイトではneovimの設定ファイルは.connfigと書かれていたり
vimの設定ファイルの.vimを推奨している場合が多い
しかし、Windows上で使用する場合初期設定では$HOME\AppData\init.vim
が使用されているためこちらを使うのが好ましい
まずは設定フォルダを作成するためにmkdir %APPDATA%\..\Local\nvim
と入力をしよう
その後cd %APPDATA%\..\Local\nvim
で今作成したフォルダに移動して
そしたらnvim init.vim
と入力してneovimを起動しよう
まずは以下のような設定を行おう
let g:python3_host_prog='C:\Python38\python.exe'
set fileencoding=cp932
set fileencodings=cp932,sjis,utf-8
これによってWindowsでneovimを利用したら基本的にはcp932がしようされもしもutf-8のファイルがあった場合でも読み込まれるというものになってます。
そのためこのDeveloper Command Prompt for VS 2019内においてnvim 〇〇.cとcl 〇〇.cそして〇〇の3つを繰り返してプログラムの学習ができるようになります。
設定について
ちょっとまってて
プラグインについて
neovim/vimには様々な人がプラグインを作成していてそれらを使用することでさらなる機能を得ることができます。
今回はdein.vimというプラグイン管理ソフトを利用してインストールしていきたいと思います。
おすすめプラグイン
vimdoc-ja
neovimのヘルプは基本的にすべて英語で書かれているためこのようなサイトに調べに来る人はとっても困るものですがこのプラグインはほとんどのヘルプを日本語に翻訳して置き換えれるものです
molokai
私の好きなカラースキームで暗めの色のやつ
インストールするだけでは反映されないので下記のようにinit.vimに追加する
colorscheme molokai
deoplete.nvim neosnippet neosnippet-snippets
もうこの3つのファイルのためにこれを書いたと言ってもいいくらいのものである
これらのプラグインはすべて補完機能を拡張するためのプラグインである
基本的に補完機能自体は挿入モードでを押すことでできるがそれだけではないそれ以上の機能をくれるのがこれらのプラグインである
インストールするだけではこれらの本領は反映されないので下記のようにinit.vimに追加する
let g:deoplete#enable_at_startup = 1
let g:deoplete#auto_complete_delay = 0
let g:deoplete#auto_complete_start_length = 1
let g:deoplete#enable_camel_case = 0
let g:deoplete#enable_ignore_case = 0
let g:deoplete#enable_refresh_always = 0
let g:deoplete#enable_smart_case = 1
let g:deoplete#file#enable_buffer_path = 1
let g:deoplete#max_list = 10000
inoremap <expr><tab> pumvisible() ? "\<C-n>" :
\ neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<tab>"
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
if has('conceal')
set conceallevel=2 concealcursor=niv
endif
これらを追記することによってtabキーで補完するものを選びでそれらを展開することができるようになる
deoplete-clang neoinclude.vim
この2つのプラグインは上の3つのプラグインで拡張した補完機能にC言語のライブラリを追加するためのプラグインである
これらのプラグインはclangという先程インストールしたものを利用するため以下のようにinit.vimに追記する必要がある
let g:deoplete#sources#clang#clang_header = 'C:\Program Files\LLVM\lib\clang\'
let g:deoplete#sources#clang#libclang_path = 'C:\Program Files\LLVM\bin\libclang.dll'
まとめ
1 chocolateyをインストールする
管理者権限で開いたPowerShellで
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
を入力する
2 必要なソフトをインストールする
choco install python3 neovim cmake llvm git -y
3 PowerShellを再起動してpythonとnvimをつなぐモジュールを用意する
pip3 install neovim
4 また以上のプラグインをすべて入れるのであればdein.tomlというファイルをinit.vimと同じフォルダ(~/AppData/Local/nvim)に作成してください
[[plugins]]
repo='vim-jp/vimdoc-ja.git'
[[plugins]]
repo = 'tomasr/molokai'
[[plugins]]
repo= 'Shougo/neosnippet-snippets'
[[plugins]]
repo = 'Shougo/deoplete.nvim'
hook_source = '''
let g:deoplete#enable_at_startup = 1
let g:deoplete#auto_complete_delay = 0
let g:deoplete#auto_complete_start_length = 1
let g:deoplete#enable_camel_case = 0
let g:deoplete#enable_ignore_case = 0
let g:deoplete#enable_refresh_always = 0
let g:deoplete#enable_smart_case = 1
let g:deoplete#file#enable_buffer_path = 1
let g:deoplete#max_list = 10000
inoremap <expr><tab> pumvisible() ? "\<C-n>" :
\ neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<tab>"
'''
on_i = 1
[[plugins]]
repo = 'Shougo/neosnippet'
hook_source = '''
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
if has('conceal')
set conceallevel=2 concealcursor=niv
endif
'''
on_i = 1
on_ft = ['snippet']
depends = ['neosnippet-snippets']
# C言語の補完
[[plugins]]
repo = 'zchee/deoplete-clang'
on_ft=['c','cpp','cmake','make']
[[plugins]]
repo='Shougo/neoinclude.vim'
on_ft=['c','cpp']
またこれが以上のプラグインをすべて入れてプラグインの設定を追加したものです
set fileencoding=cp932
set fileencodings=cp932,sjis,utf-8
scriptencoding=utf-8
let g:python3_host_prog = 'c:\Python38\python.exe'
"プラグインのインストール
"プラグインが実際にインストールされるディレクトリ
let s:dein_dir = expand('~\AppData\Local\nvim\dein')
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '\repos\github.com\Shougo\dein.vim'
" dein.vim がなければ github から落としてくる
if &runtimepath !~# '\dein.vim'
if !isdirectory(s:dein_repo_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
endif
execute 'set runtimepath^=' . s:dein_repo_dir
endif
" 設定開始
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" プラグインリストを収めた TOML ファイルの場所
let g:rc_dir = expand('~\AppData\Local\nvim\')
let s:toml = g:rc_dir . '\dein.toml'
" TOML を読み込み、キャッシュしておく
call dein#load_toml(s:toml, {'lazy': 0})
" 設定終了
call dein#end()
call dein#save_state()
endif
" もし、未インストールものものがあったらインストール
if dein#check_install()
call dein#install()
endif
filetype plugin on
let g:deoplete#sources#clang#clang_header = 'C:\Program Files\LLVM\lib\clang\'
let g:deoplete#sources#clang#libclang_path = 'C:\Program Files\LLVM\bin\libclang.dll'
私の設定ファイルです良ければ参照してください