Vimrc
通過 nix home-manager 定義的 vimrc 中的空字元串語法
我想使用 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/