vim脚本,如何获取当前用户id?

选项 --clean 没有预期的效果。

你试试终端清屏之后,再运行前面的命令。

还真是。应该就是 terminal 设置方面的问题。我试了下这里的答案,并没有成功。

vim --clean -c 'echo expand("$UID") | q' 行为和 Nvim 是一致的。

我这里 Vim 和 Nvim 表现不一致。

|q 得到屏幕输出应该是个 bug,是 Vim 退出前没有清屏的副作用。Emacs 是直接求值打印,不用打开窗口再关闭。

还是清屏了. zsbd

嗯。终端清屏之后,两次 Vim 运行的结果是不一样的(一次有大量空行,一次没有)。不清楚是 bug 或其它原因,可能与 termcap 完全无关。

Neovim 有静默模式(:h -es) 的。

With |:verbose| or ‘verbose’, other commands display on stderr:

nvim -es -c 'verbose echo expand("$UID") . "\n"'

Vim 的表现不一可能与 termcap 无关。

1 个赞

你是说uv里面实现getuid是通过调用外部命令?应该不会吧,对它来说直接调用系统api更简单

你理解有误,我前面说的就是 getuid 用的 libluv(libuv 的 lua 绑定),而 Vim 只能用外部命令。

❯ pactree -d 1 neovim
neovim
├─libtermkey
├─libuv
├─msgpack-c
├─unibilium
├─libvterm>0.1.4
├─luajit
├─libluv
└─tree-sitter