Open30

neovim

ultimatileultimatile

LazyVimを使うとmarkdownのtriple grace accent(```)が消える

nvim本体のconceallevel設定が非0になっているのが原因っぽいです.
最大3で数字が大きいほどモノが隠れていくようです.

conceallevelの確認方法

command modeで以下を実行します.

:set conceallevel?

私の場合はconceallevel=2でした.

修正方法

vim.opt.conceallevel = 0

conceallevel0にします.
markdownのみ0にしたい場合はもう少し工夫が必要です(future work).

他の原因

plugin由来,特にplasticboy/vim-markdown由来で同じ現象が発生するようなので上記の方法で解決しない場合は以下も参考にして下さい.

https://qiita.com/inomu/items/f3a6f9bfef30ba21e658

conceallevelに関する公式doc

https://neovim.io/doc/user/options.html#'conceallevel'

ultimatileultimatile

nerd fontのinstall

brew install font-hack-nerd-font

iTerm2の設定→Profiles→使ってるprofileを選択→TextUse a different font for non-ASCII textに✅→Hack Nerd Font Monoを選択→(font sizeをmain fontと合わせる (任意))

ultimatileultimatile

sudoがないスパコンにnvim入れたメモ

問題

  • sudoがない→package manager基本死ぬ
    • linuxbrewもなんだかんだ無理だったが後述のpatchelfを入れるのには使えたため入れ損ではなかった
  • binary落としてくればよい.対応したversionのglibcが入ってないといけない
    • 必要なglibcがスパコンに入ってなかった→glibcのsource build

glibc 2.29のsource build

wget http://ftp.gnu.org/gnu/glibc/glibc-2.31.tar.gz
tar xf glibc-2.29.tar.gz
cd glibc-2.29
mkdir build && cd build
../configure --disable-werror --prefix=$HOME/local/glibc-2.29
make
make install
  • --prefixはinstall directory
  • parallel buildしているとbuildが死ぬっぽいので並列数(-j)を絞りつつ何回かnothing to buildになるまでmakeする(は?)
  • --disable-werrorをつけておかないとwarningで落ちる(参考)

nvimが使用するglibcを指定

  • 追加したglibcが見えるようにPATHとかLDとかに追加しないといけないと思うかもしれないがそれをやると他のcommand-line toolが全部死ぬのでやってはいけない
    • もしやってしまうとvimとかも死ぬのでかなり詰み感が出る
      • 落ち着いてLD_LIBRARY_PATHから追加したglibcのpathを消すと直る
  • 代わりにpatchelfを使う
    • スパコンになかったのでbrew install patchelfで入れた
  patchelf --set-interpreter $HOME/local/glibc-2.29/lib/ld-linux-x86-64.so.2 $HOME/local/bin/nvim
  patchelf --set-rpath $HOME/local/glibc-2.29/lib $HOME/local/bin/nvim
  • 1行目がライブラリローダー(LD)の指定,2行目glibcのpath指定.

https://zenn.dev/iwancof/articles/a4088afb8b77d2

ultimatileultimatile

patchelfだとダメっぽいのでenvを使うwrapperを書いてnvimだけ隔離環境を使う

run_nvim.sh
#!/bin/bash

# Version of glibc
VGLIBC=2.29

# Define the custom path
CUSTOM_PATH="$HOME/local/glibc-${VGLIBC}/bin:$PATH"

# Define the custom library path
CUSTOM_LIB_PATH="$HOME/local/glibc-${VGLIBC}/lib:$LD_LIBRARY_PATH"

# Define the path to the nvim binary
NVIM_BINARY="/path/to/nvim"

# Use the env command to set LD_LIBRARY_PATH only for this execution of nvim
exec env PATH="$CUSTOM_PATH" LD_LIBRARY_PATH="$CUSTOM_LIB_PATH" "$NVIM_BINARY" "$@"
.bashrc
alias nvim="/path/to/run_nvim.sh"
  • /path/to/は適宜書き換える
ultimatileultimatile

keybind

モード切り替え

i: 挿入モード
<esc>: ノーマルモード
:コマンドモード

normal mode

  • J 改行を削除 (spaceを入れて下の行と連結)
  • gJ 改行を削除(spaceを入れずに下の行と連結)
  • dW 現在の単語を削除(次の空白まで)
  • dw現在の単語を削除(ワード単位)

https://howpon.com/20650#i-2

  • zz カーソル位置そのままでいい感じにスクロール
  • zt カーソル位置そのままでいい感じにスクロール,カーソル行はかなり上にくる
ultimatileultimatile
ultimatileultimatile

on provider cmp:GHOST_TEXT.win:
Error executing lua: ...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:35: Invalid buffer id: 39
stack traceback:
[C]: in function 'nvim_buf_del_extmark'
...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:35: in function <...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:33>Error in decoration provider cmp:GHOST_TEXT.win:
Error executing lua: ...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:35: Invalid buffer id: 39
stack traceback:
[C]: in function 'nvim_buf_del_extmark'
...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:35: in function <...hare/nvim/lazy/nvim-cmp/lua/cmp/view/ghost_text_view.lua:33>

ultimatileultimatile

LazyVimのkeymap

https://www.lazyvim.org/keymaps

buffer/windowの移動

buffer

<S-h>: 前のbuffer
<S-l>: 次のbuffer

window

<C-h>``<C-j>``<C-j>``<C-j>: window移動

mini.surround

gsa add surronding
textobj, 括弧が続く

ultimatileultimatile

複数行をまとめてcomment out

  • マウスで該当行を選択→<S-V> (visual line mode)→gc
  • <S-V> (visual line mode)→該当行を選択→gc
ultimatileultimatile

Telescope

文字検索を:Telescope live_grepでできると聞いてやってみたら

[telescope.live_grep]: 'ripgrep', or similar alternative, is a required dependency for the live_grep picker. Visit https://github.com/BurntSushi/ripgrep#installation for installation instructions.

と出た.書いてある通りだがripgrepの類が必要ということでripgrepをinstallした

brew install ripgrep
ultimatileultimatile

Julia LSPの導入

以下を実行

:LspInstall julials

mason.nvim, nvim-lspconfig, mason-lspconfig.nvimが入ってる前提(LazyVimだと入ってる)

ultimatileultimatile

LazyVimだとそもそもLazyExtraで:LspInstallも不要なものが多いがJuliaは含まれていないので自分で実行する必要がある

ultimatileultimatile

Luaの設定fileのprint debugに使うもの

  • print("Hello, nvim!")
  • vim.notify("Hello, nvim!")
    • startup中にprintを読んでも出力されないのでこちらを使う
  • vim.api.nvim_exec2
    • vimのcommandをlua script中で実行するのに使う.書式は以下の例参考

例: startup中でも:imap <Tab>の結果を出力する函数

-- Function to capture and print the result of `:imap <Tab>`
local function debug_tab_mapping()
  -- Run the :imap command and capture its output
  local tab_mapping = vim.api.nvim_exec2("silent! imap <Tab>", { output = true })
  -- Print the output to check the mapping
  vim.notify(tab_mapping.output)
end
ultimatileultimatile

iTerm2でM-prefix keybing (meta key)使いたい場合,iTerm2のprofile設定の Left/Right Option keyの項目でMeta keyに設定する必要がありそう(未検証)