Open4
NeovimとVSCodeのコーディング環境構築
NeoVimのメッセージが日本語なのが少し気になる。
設定ファイルに以下の記述で英語化できる。
また、init.vim
にlua構文で設定を記述するには、 lua << EOF ... EOF
で囲むとOK
~/.config/nvim/init.vim
"neovimのメッセージを英語にする
lua << EOF
vim.opt.langmenu = 'en_US.UTF-8'
vim.api.nvim_exec('language message en_US.UTF-8', true)
EOF
VSCodeは vscode-neovimの拡張機能を導入
nvim
が使える状態でインストールすると、特にパスを指定することなく使用することができた。
規定の位置の設定ファイルは自動で読み込まれている。
拡張機能公式のドキュメントにもあるが、VSCode上では挿入モードは基本的にVSCodeの操作に移譲しているよう。
jk
などカスタムしたキーバインドでノーマルモードに抜けるために、VSCodeのkeybind.json
に以下を追記する必要がある。
keybind.json
{
"command": "vscode-neovim.compositeEscape1",
"key": "j",
"when": "neovim.mode == insert && editorTextFocus",
"args": "j"
},
{
"command": "vscode-neovim.compositeEscape2",
"key": "k",
"when": "neovim.mode == insert && editorTextFocus",
"args": "k"
}
NeoVimにおいて、挿入モードからノーマルモードに切り替えた際、日本語入力のままだと何かと不便。
こちらの記事を参考にノーマルモードに変更した際に英字に切り替えるように設定。
IntelチップのMac、OSはSonanoにて動作OK
init.vim
" 挿入モード→ノーマルモードに変わった際に英字にする設定 jk, <Esc>, <C-[>全てに対応できた
if has('mac')
set ttimeoutlen=1
let g:imeoff = 'osascript -e "tell application \"System Events\" to key code 102"'
augroup MyIMEGroup
autocmd!
autocmd InsertLeave * :call system(g:imeoff)
augroup END
endif
VSCode上でも、日本語入力の挿入モードで <C-[> や <Esc>キーでノーマルモード&英字切り替えができた
neovimの設定ファイルをターミナル上のneovimでもVSCodeの拡張機能でも併用している。
VSCodeの機能で賄いたい設定はvscode起動時にはスキップするように設定。
公式を参考に以下の記述法でVSCode以外での設定を記述
if !exists('g:vscode')
....
end
init.vim
"vscode起動時にはスキップする設定
if !exists('g:vscode')
syntax on "コード色分け
set number "行番号
set title "編集中のファイル名
set showmatch "括弧入力時の対応する括弧を表示
set showcmd "コマンドを画面の再下行に表示
set tabstop=4 "タブのスペースを4に
set shiftwidth=4 "インデントのスペースを4に
set expandtab "入力したタブをスペースに置き換え
set smartindent "オートインデント
set laststatus=2
set ruler "カーソルの行列目を表示(ルーラー)
end