三、SpaceVim配置

7hu95b發表於2024-06-10

一、基本鍵位對映

在配置 vim 的快捷鍵時,需要掌握基本鍵位的描述符。除了基本的 <CR>, <ESC>, <SPACE>, <C-..> 外,補充下列常用對映表:

  • <k0> - <k9> 小鍵盤數字 0-9
  • <BS> 退格鍵 backspace
  • <S-...> 代表 shift
  • <M-...><A-...> Windows 和 Linux 下代表 alt/meta 鍵,在 macOS 上是 option
  • <D-...> macOS 的 command
  • <Insert> 代表 insert 按鍵
  • <Del> 代表 delete 按鍵

二、匯入 vim script 設定

比如設定 vim 本身快捷鍵等操作,不能在 [option] 中直接設定,需要間接完成。在 .SpaceVim.d/init.toml 中:

[options]
    bootstrap_before = "myspacevim#before"
    bootstrap_after = "myspacevim#after"

對應地,在 .SpaceVim.d/autoload/myspacevim.vim中寫入:

function! myspacevim#before() abort
    let g:neomake_enabled_c_makers = ['clang']
    nnoremap jk <esc>
endf

function! myspacevim#after() abort
endf

建議把需要新增的內容放在 #after 中,如果放在 #before 中會導致開啟時使用的卡頓。

三、讀取 cmake_command.json

spacevim 不能自動讀取 cmake 生成的 json 檔案,導致程式碼中標頭檔案等顯示報錯。自己推測可能的問題是:

  • clang 不能讀取此 json 檔案;
  • spacevimchecker 模組使用 neomakeale,可能是這兩個檢查器的問題。

經過排查,確定是 neomake 的問題。之前有過 ale 的配置經驗,所以先行切換為 ale 進行設定。切換為 ale 後(在 [options] 中新增 lint_engine = "ale" ),標頭檔案包含問題解決。

暫時沒有找到相關設定 neomake 的方法 ,不過在這裡提供一種思路,把生成的 cmake_command.json 手動寫入 .clang 檔案中,這樣 neomake 就能讀取此檔案了。可以使用 pkg-config 的方式,這樣就避免了手動新增的麻煩。下面這是一個 .clang 檔案的例子。

-std=c++11
$(pkg-config --cflags --libs opencv4)

相關文章