vimrc 中通过 nix home-manager 定义的空字符串语法

vimrc 中通过 nix home-manager 定义的空字符串语法

我想使用 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/

相关内容