Skip to content

一些nvim的配置和使用技巧

cmd

Lua 输出:

:lua =vim.opt.runtimepath:get()

:setl ma! ma? 可以切换一个buffer的只读状态。
注意其他编辑器的只读一般是“你可以修改但不能保存“,这个是你根本不能修改,比如说根本就不能进入插入模式。
可以设一个顺手的keymap,比如说我是nnoremap ;m :setl ma! ma?

另外,:setl xxx! xxx? 这个是一个常用切换option开关的模式,比如说:nnoremap w setl wrap! wrap?设keymap来切换自动换行,并在状态栏显示当前实际状态。

xnoremap ,x `.gvpP

abbrev ,f =expand("%:")
abbrev ,c =getcwd()

下面的keymap可以直接执行一行vimscript或者lua (取决于当前文件类型)。用来调整或者测试vim配置非常方便,改完一行就执行一下,不需要source整个vimrc文件了。

command! -range ExecVimL call execute(getline(, ), '')
command! -range ExecLua call execute('lua ' . join(getline(, ), " \n "), '')
nnoremap ,r ((&ft=='lua' ? ':ExecLua' : ':ExecVimL') . ':echo "Current line executed"')
xnoremap ,r ((&ft=='lua' ? ':ExecLua' : ':ExecVimL') . ':echo "Selected range executed"')

链接:https://www.zhihu.com/question/636018229/answer/3386613023
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

用.!(当前行),%!(整个buff),'<,'>!(选中)可以把文本作为stdin传给一个外部shell命令,并用其stdout输出内容替换相应文本,用来调外部的格式化命令很方便。另外,如果传给bash或zsh的话就相当于把文本作为shell命令执行。

「修改 1」→「撤销」→「修改 2」,这时如果想退回到「修改 1」,按 u 是回不去的。

可以按 g-(反方向是 g+)

实际上等同于 :earlier 和 :later 。这两个命令后边是可以跟「次数」而不是「时间」的顺便一说,不写默认是 1 次。

test 2