はじめに
私が大学生になり学校の授業でC言語のプログラミングを学んでいますが、友達にvimをすすめたが複数部分で引っかかってしまったため引っかかったところと簡単な対策を書いていくために書いています。
tl;dr
最後のコピペって完成!
環境
- Windows10
- VisualStudio2019
- neovim,v0.4.2
- clang,v9.0.0
- cmake,v3.14.3
- python3.8.0
- git
目標
開発者用コマンドプロンプト内でC言語を書いてサクッと実行する
必要なソフトのインストール
1 言わずもがななVisualStadio
2 他のソフトをまとめてインストールするためchocolateyをインストールする
Chocolatey
Chocolateyを使った環境構築の時のメモ
PowerShellを管理者権限で起動し下記のコマンドを入力する
PowerShellを管理者権限で起動するにはWindowsキーとxキーを同時に押しAを押すとできる
Set-ExecutionPolicyBypass-ScopeProcess-Force;iex((New-ObjectSystem.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
これの処理が終わるとPowerShell上でchoco install 〇〇
などと言ったコマンドで簡単にソフトウェアをインストールすることができる
chocoinstallpython3neovimcmakellvmgit-y
このコマンドで必要なソフトのインストールが終わるのでPowerShellは終了しよう
neovimの文字コード設定
此処から先は先程インストールしたVisualStadioないにはいっているDeveloper Command Prompt for VS 2019を利用する
スタートメニュー内のVisualStadio2019のファイル内にあるためこれを選択してほしい
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を起動しよう
まずは以下のような設定を行おう
letg: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に追加する
letg:deoplete#enable_at_startup =1letg:deoplete#auto_complete_delay =0letg:deoplete#auto_complete_start_length =1letg:deoplete#enable_camel_case =0letg:deoplete#enable_ignore_case =0letg:deoplete#enable_refresh_always =0letg:deoplete#enable_smart_case =1letg:deoplete#file#enable_buffer_path =1letg: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に追記する必要がある
letg:deoplete#sources#clang#clang_header ='C:\Program Files\LLVM\lib\clang\'letg:deoplete#sources#clang#libclang_path ='C:\Program Files\LLVM\bin\libclang.dll'
まとめ
以上のプラグインをすべて入れるのであればdein.tomlというファイルをinit.vimと同じフォルダに作成してください
[[plugins]]repo='vim-jp/vimdoc-ja.git'[[plugins]]repo='tomasr/molokai'[[plugins]]repo='Shougo/neosnippet-snippets'[[plugins]]repo='Shougo/deoplete.nvim'hook_source='''letg:deoplete#enable_at_startup=1letg:deoplete#auto_complete_delay=0letg:deoplete#auto_complete_start_length=1letg:deoplete#enable_camel_case=0letg:deoplete#enable_ignore_case=0letg:deoplete#enable_refresh_always=0letg:deoplete#enable_smart_case=1letg:deoplete#file#enable_buffer_path=1letg:deoplete#max_list=10000inoremap<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)ifhas('conceal')setconceallevel=2concealcursor=nivendif'''on_i=1on_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-8scriptencoding=utf-8letg:python3_host_prog='c:\Python38\python.exe'"プラグインのインストール"プラグインが実際にインストールされるディレクトリlets:dein_dir= expand('~\AppData\Local\nvim\dein')" dein.vim 本体lets: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_direndif
execute 'set runtimepath^='.s:dein_repo_direndif" 設定開始if dein#load_state(s:dein_dir)call dein#begin(s:dein_dir)" プラグインリストを収めた TOML ファイルの場所letg:rc_dir= expand('~\AppData\Local\nvim\')lets: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()endiffiletype plugin onletg:deoplete#sources#clang#clang_header ='C:\Program Files\LLVM\lib\clang\'letg:deoplete#sources#clang#libclang_path ='C:\Program Files\LLVM\bin\libclang.dll'
私の設定ファイルです良ければ参照してください