我想使用 home-manager 在带有 extraConfig 选项的 nix-expression 中声明我的 vim 配置。我正在尝试从 coc.nvim 运行示例 .vimrc 配置,其中一行显示:
设置状态行^=%{coc#status()}%{get(b:,'coc_current_function','')}
在最小的 home.nix 中,我将其设置为:
{ config, pkgs, ... }:
{
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.packages = [
pkgs.nodejs
];
programs.vim = {
enable = true;
plugins = [
pkgs.vimPlugins.coc-nvim
];
extraConfig = ''
" Add status line support, for integration with other plugin, checkout `:h coc-status`
set statusline^=%{coc"status()}%{get(b:,'coc_current_function','')}
'';
};
}
不幸的是,空的 vim 字符串关闭了多行 nix 字符串并留下home-manager build switch
:
error: syntax error, unexpected ')', expecting ';', at /home/demo/.config/nixpkgs/home.nix:18:66
我已经尝试在 get 函数中替换''
with ""
,但 vim 不喜欢这样:
E540: Unclosed expression sequence: statusline^=%{coc
是的,两个单引号 ('') 表示缩进字符串的结尾,因此要在缩进字符串中使用它们,您需要对它们进行转义: