我想使用 home-manager 通过 extraConfig 选项在 nix-表达式 中声明我的 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-function 内部替换,但 vim 不喜欢这样:
E540: Unclosed expression sequence: statusline^=%{coc
答案1
是的,两个单引号 ('') 表示缩进字符串的结尾,因此要在缩进字符串中使用它们,您需要对它们进行转义:
由于 ${ 和 '' 在缩进字符串中具有特殊含义,因此您需要一种方法来引用它们。 $ 可以通过在其前面添加 ''(即两个单引号)进行转义,即 ''$。'' 可以通过在其前面加上 ' 前缀来转义,即 '''。 - 来源:https://nixos.org/nix/manual/