Open4

NeovimとVSCodeのコーディング環境構築

TataTata

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
TataTata

VSCodeは vscode-neovimの拡張機能を導入
nvim が使える状態でインストールすると、特にパスを指定することなく使用することができた。
規定の位置の設定ファイルは自動で読み込まれている。

拡張機能公式のドキュメントにもあるが、VSCode上では挿入モードは基本的にVSCodeの操作に移譲しているよう。
jk などカスタムしたキーバインドでノーマルモードに抜けるために、VSCodeのkeybind.jsonに以下を追記する必要がある。
https://github.com/vscode-neovim/vscode-neovim?tab=readme-ov-file#composite-escape-keys

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"
  }
TataTata

NeoVimにおいて、挿入モードからノーマルモードに切り替えた際、日本語入力のままだと何かと不便。
こちらの記事を参考にノーマルモードに変更した際に英字に切り替えるように設定。
https://rcmdnk.com/blog/2017/03/10/computer-mac-vim/

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>キーでノーマルモード&英字切り替えができた

TataTata

neovimの設定ファイルをターミナル上のneovimでもVSCodeの拡張機能でも併用している。
VSCodeの機能で賄いたい設定はvscode起動時にはスキップするように設定。
https://github.com/vscode-neovim/vscode-neovim?tab=readme-ov-file#neovim-configuration

公式を参考に以下の記述法で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