0

Cmder/conemu 默认显示完整的当前路径,我希望它只显示当前目录。那可能吗?我查看了设置,但无法找到可能在哪里或如何完成。

4

2 回答 2

4

安德鲁的回答奏效了!但我做了一些调整,让它看起来更适合该语言。

打开cmder_folder/vender/clink.lua。在下面的代码之后cwd

local old_prompt = clink.prompt.value
local cwd = old_prompt:match('.*(.:[^>]*)>')
if cwd == nil then cwd = clink.get_cwd() end

我添加了受安德鲁代码启发的以下几行。

local function get_folder_name(str)
    index = str:match'^.*()\\'
    local dir = string.sub(str, index+1)
    return dir
end    

cwd = get_folder_name(cwd)

它非常适合我。

我的截图

于 2020-05-16T15:32:54.453 回答
1

下午好,我今天自己也遇到了同样的问题。我找不到答案,所以我制定了自己的解决方案。我将在下面分享。我以前从未用 lua 写过,所以我确信我的代码不是最好的。但是,它确实有效。

cmder 的提示正在构建在 LUA 脚本中。您将不得不编辑 cmder\vendor\clink.lua 文件。在第 44 行附近,您将看到以以下开头的行: local cmder_prompt 这就是构建提示本身的位置。

“{cwd}”是该行中打印路径的位。因此,我添加了一个函数,该函数采用该 cwd 变量并剥离除列表中最后一个目录之外的所有值。因此,将此函数添加到您的 lua 脚本中:

get_folder_name = function(str)
        index = str:match'^.*()\\'
        local name = string.sub(str, index+1)
        return name
end

然后我在我传递 cwd 变量的本地 cmder_prompt 行之前添加了这个:

dir = get_folder_name(cwd)

然后最后改变这一行:

local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"

至:

local cmder_prompt = "\x1b[1;32;40m"..dir.." {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"

如果不清楚,我将粘贴下面的代码。我下面的代码使提示看起来像这样: {myUsername@mycomputerName}:directory $

    -- build our own prompt
    -- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
    -- color codes: "\x1b[1;37;40m"
    username = os.getenv("USERNAME")
    host = os.getenv("COMPUTERNAME")

    dir = get_folder_name(cwd)
    local cmder_prompt = "\x1b[1;32;40m{"..username.."@"..host.."}:\x1b[1;94;40m"..dir.." \x1b[1;39;40m$ \x1b[0m"
    local lambda
    cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
    if env == nil then
        lambda = "λ"
    else
        lambda = "("..env..") λ"
    end
    clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
end

get_folder_name = function(str)
        index = str:match'^.*()\\'
        local name = string.sub(str, index+1)
        return name
end
于 2018-01-05T15:44:58.523 回答