how to debug neovim
- print(vim.inspect(the_table_you_want_to_show))
- https://github.com/glepnir/nvim-lua-guide-zh
- print(debug.backtrace())
- https://stackoverflow.com/questions/10838961/lua-find-out-calling-function
有趣的
https://news.ycombinator.com/item?id=38515004
vim 的小技巧
- 翻滚屏幕
| key binding | function |
|---|---|
| H | 保持屏幕内容不动, 移动到屏幕最上方 |
| M | 保持屏幕内容不动, 移动到屏幕中间 |
| L | 保持屏幕内容不动, 移动到屏幕最下面 |
| zt | 将当前行移动到屏幕最上方 |
| zz | 将当前行移动到屏幕中间 |
| zb | 将当前行移动到屏幕最下方 |
| Ctrl + f | 向前滚动一屏,但是光标在顶部 |
| Ctrl + d | 向前滚动一屏,光标在屏幕的位置保持不变 |
| Ctrl + b | 向后滚动一屏,但是光标在底部 |
| Ctrl + u | 向后滚动半屏,光标在屏幕的位置保持不变 |
| Ctrl + e | 丝般顺滑地向上滚动 |
| Ctrl + y | 丝般顺滑地向下滚动 |
https://stackoverflow.com/questions/351161/removing-duplicate-rows-in-vi 排序,并且删掉重复的行
:sort u
vimscript 的调试方法 echom 然后 :message 查看,注意不能是 echo
nvim 的常用技巧
- vim.api.nvim_err_writeln(“hello \n”) – 不要忘记 \n
- nvim “+let g:auto*session_enabled = v:false” -c “:e mm/gup.c” -c “lua vim.loop.new_timer():start(1000 * 60 _ 30, 0, vim.schedule_wrap(function() vim.api.nvim_command("exit") end))”
- \r 是换行
-
:%s/$/abc/ 来给每一行的最后增加 abc
- 如果
https://stackoverflow.com/questions/351161/removing-duplicate-rows-in-vi
:sort u
删掉空行:
:g/^$/d
yazi 的小技巧
如何批量的修改文件。
使用空格选中,然后 jk 移动,最后使用 r 来 rename ,会进入 到 vim 中编辑
这种项目到底在解决什么问题
https://github.com/SuperCuber/dotter
有趣的东西看看: https://www.reddit.com/r/neovim/comments/1q3tnz5/10_builtin_neovim_features_youre_probably_not/
可以改善的东西
- nvim 中 失效的 symbol link 需要展示
https://neovim.io/doc/user/quickref.html#Q_qf
试试这个命令吧
:r!figlet vim
operator
这类键叫 操作符(operator),后面接“移动范围”或“文本对象”:
操作符 + 范围
常用操作符有:
操作符 含义 示例
━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
d 删除 diw 删除整个单词
──────── ──────────────────── ────────────────────────────────
c 删除并进入插入模式 ci" 修改引号内部
──────── ──────────────────── ────────────────────────────────
y 复制 yip 复制当前段落
──────── ──────────────────── ────────────────────────────────
> 增加缩进 >ip 缩进当前段落
──────── ──────────────────── ────────────────────────────────
< 减少缩进 <ip 取消当前段落一层缩进
──────── ──────────────────── ────────────────────────────────
= 按缩进规则重新缩进 =ip 调整当前段落缩进
──────── ──────────────────── ────────────────────────────────
gu 转小写 guiw 将单词转小写
──────── ──────────────────── ────────────────────────────────
gU 转大写 gUiw 将单词转大写
──────── ──────────────────── ────────────────────────────────
g~ 大小写互换 g~iw 切换单词大小写
──────── ──────────────────── ────────────────────────────────
! 用外部命令过滤文本 !ip 选择当前段落,等待输入命令
范围可以复用,学会一个,就能搭配多个操作符:
范围 含义 组合示例
━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━
w 到下一个单词开头 dw、yw
────── ──────────────────────── ───────────────
$ 到行尾 d$、c$、y$
────── ──────────────────────── ───────────────
iw 整个单词,不含周围空白 diw、ciw、yiw
────── ──────────────────────── ───────────────
aw 单词及相邻空白 daw、caw
────── ──────────────────────── ───────────────
i" 双引号内部 di"、ci"、yi"
────── ──────────────────────── ───────────────
a" 包括双引号 da"、ca"
────── ──────────────────────── ───────────────
ip 当前段落 dip、yip、=ip
────── ──────────────────────── ───────────────
G 到文件末尾 dG、yG
很多操作符还有整行形式:dd 删除行、yy 复制行、cc 修改行、» 缩进行、== 重新缩 进行。
例如,光标位于 “hello world” 内部:
- di”:变成 ““,留在普通模式。
- ci”:变成 ““,开始输入新内容。
- yi”:复制 hello world,不修改文本。
which key 的 tirgger mode
这里的 trigger(触发)就是:which-key 在什么时机开始提示“接下来可以按哪些键”。它有两种入口。
- 按下某个前缀键,触发提示
比如你定义了: