Vimrc

通過 nix home-manager 定義的 vimrc 中的空字元串語法

  • December 26, 2019

我想使用 home-manager 在帶有 extraConfig 選項的 nix-expression 中聲明我的 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 函式中替換''with "",但 vim 不喜歡這樣:

E540: Unclosed expression sequence: statusline^=%{coc

是的,兩個單引號 (’’) 表示縮進字元串的結尾,因此要在縮進字元串中使用它們,您需要對它們進行轉義:

由於 ${ 和 ’’ 在縮進字元串中具有特殊含義,因此您需要一種引用它們的方法。 $ can be escaped by prefixing it with ’’ (that is, two single quotes), i.e., ’’ $ . ’’ 可以通過前綴 ’ 來轉義,即 ‘’’。- 來源:https ://nixos.org/nix/manual/

引用自:https://unix.stackexchange.com/questions/558893