vimrcのnix home-managerによって定義された空の文字列構文

vimrcのnix home-managerによって定義された空の文字列構文

extraConfig オプションを使用して nix-expression で vim 構成を宣言するために home-manager を使用したいと思います。 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

はい、2つの一重引用符( '')はインデントされた文字列の終わりを表しているため、インデントされた文字列でそれを使用するにはエスケープする必要があります。

$ {と ''はインデントされた文字列に特別な意味を持つため、引用する方法が必要です。 $の前に「」(つまり、2つの一重引用符)を追加してエスケープできます(例:「$」)。「前に」を付けてエスケープできます。つまり、「」。 - 源泉:https://nixos.org/nix/manual/

関連情報