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/