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/