簡體   English   中英

魚殼:無法擦除功能

[英]fish shell: unable to erase function

嘗試臨時禁用fish_mode_prompt函數時:

function get_input -a prompt var_name -d 'get user input and place it in var_name'
  functions -c fish_mode_prompt fish_mode_prompt_tmp
  functions -e fish_mode_prompt
  read --global --prompt-str="$prompt" $var_name
  functions -c fish_mode_prompt_tmp fish_mode_prompt
  functions -e fish_mode_prompt_tmp
end

我收到以下錯誤:

functions: Function “fish_mode_prompt” already exists. Cannot create copy “fish_mode_prompt_tmp”
~/.config/fishdots/plugins/fishdots_crm/init/rc1.d/01.functions.fish (line 114):
  functions -c fish_mode_prompt_tmp fish_mode_prompt
  ^
in function “get_input”
        called on standard input
        with parameter list “hello world:  charlie”


       functionsfunctions - print or erase functions
        -

   Synopsis
       functions [ -a | --all ] [ -n | --names ]
       functions [ -D | --details ] [ -v ] FUNCTION
       functions -c OLDNAME NEWNAME
       functions -d DESCRIPTION FUNCTION
       functions [ -e | -q ] FUNCTIONS...

functions: Type “help functions” for related documentation

我不完全確定這里發生了什么。 應該行嗎?

參見https://github.com/fish-shell/fish-shell/issues/741 functions --erase實際上不會刪除包含自動加載的函數定義的文件。

與其嘗試以這種方式重命名功能,不如將其替換為虛擬實現:

function fish_mode_prompt; end
read --global --prompt-str="$prompt" $var_name
function -e fish_mode_prompt

但我不明白您為什么要這樣做。 如果您使用的是vi模式,則實際上應該始終讓其狀態指示器出現。 即使在執行read命令時。 如果您不喜歡狀態指示器,則只需定義您自己的〜/ .config / fish / functions / fish_mode_prompt.fish自動加載的腳本,並使用一個空的fish_mode_prompt函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM