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

예, 두 개의 작은따옴표('')는 들여쓰기된 문자열의 끝을 나타내므로 들여쓰기된 문자열에서 이를 사용하려면 이를 이스케이프해야 합니다.

${ 및 ''는 들여쓰기된 문자열에서 특별한 의미를 갖기 때문에 이를 인용할 방법이 필요합니다. $ 앞에 ''(즉, 두 개의 작은따옴표)를 추가하여 이스케이프할 수 있습니다(예: ''$).'' 앞에 ' 를 붙여서 이스케이프할 수 있습니다. 즉, '''. - 원천:https://nixos.org/nix/manual/

관련 정보