标签: zsh

获取一个提示,指示Zsh中的Git-branch

我单独运行以下代码,因为我的提示在.zshrc中失败.这表明我显然没有一个名为__git_ps1的程序.它不在MacPorts中.

#1

PROMPT="$(__git_ps1 " \[\033[1;32m\] (%s)\[\033[0m\]")\$"$
Run Code Online (Sandbox Code Playgroud)

#2

PROMPT="$(__git_ps1 " (%s)")\$"$
Run Code Online (Sandbox Code Playgroud)

#3

# Get the name of the branch we are on
git_prompt_info() {
  branch_prompt=$(__git_ps1)
  if [ -n "$branch_prompt" ]; then
    status_icon=$(git_status)
    echo $branch_prompt $status_icon
  fi
}

# Show character if changes are pending
git_status() {
  if current_git_status=$(git status | grep 'added to commit' 2> /dev/null); then
    echo "?"
  fi
}
autoload -U colors
colors
setopt prompt_subst
PROMPT='
%~%{$fg_bold[black]%}$(git_prompt_info)
? %{$reset_color%}'
Run Code Online (Sandbox Code Playgroud)

你怎么能得到一个显示Git分支名称的提示?

git zsh prompt

56
推荐指数
7
解决办法
5万
查看次数

删除函数定义(相当于unalias)

我正在构建一个程序,通过定义每个项目的别名和函数,根据他正在处理的项目添加到当前用户的shell.这些别名和函数可能并且肯定会具有相同的名称,例如cdproj,cd项目的根目录.

我想在更改项目时删除先前定义的别名和函数(在(重新)定义另一个项目的别名和函数之前.我知道我可以unalias在bash和zsh中删除别名,但是我如何为a做同样的事情功能?

bash shell zsh

52
推荐指数
2
解决办法
1万
查看次数

Emacs多项无法正确显示特殊字符

这很奇怪.我在下面定义了以下提示zsh:

local user_host='%{$terminfo[bold]$fg[green]%}%n @ %m%{$reset_color%}'
local current_dir='%{$terminfo[bold]$fg[blue]%} %~%{$reset_color%}'
local git_branch='$(git_prompt_info)%{$reset_color%}'
local return_code="%(?..%{$fg[red]%}%? ?%{$reset_color%})"

PROMPT="??${user_host} %D{[%a, %b %d %I:%M:%S]} ${current_dir} ${git_branch}
??%B$%b "
RPS1="${return_code}"
Run Code Online (Sandbox Code Playgroud)

它在Emacs()gnome-terminal中的ansi-term终端以及终端中运行良好M-x ansi-term- 请参阅下面的示例:

提示示例gnome-terminal/ansi-term

但是,它multi-term在Emacs 下运行不正常,如下所示:

提示示例多学期

我认为multi-term能够解释终端喜欢gnome-terminalansi-term做的同一组转义字符 .为什么不git-prompt_info正确解释由其他人返回的转义字符?

我也尝试过:

  • M-x set-terminal-coding-system 并将其设置为 utf-8-unix
  • TERM=eterm-color 在多学期终端内,或在致电Emacs之前,等等.
  • TERM= 在多学期终端内,或在致电Emacs之前,等等.
  • 删除任何export TERM我的.zshrc

更新(2014年1月29日):

到目前为止,最好的解决方案似乎是执行以下操作:

TERM=xterm-256color

但是导致我在这里报告的另一个问题:在Emacs中将转义序列传递给ansi-term中的shell.

emacs terminal zsh ansi-term

52
推荐指数
1
解决办法
2609
查看次数

在zsh中等价$ {BASH_SOURCE [0]}?

标题应该说明一切.我正在寻找与${BASH_SOURCE[0]}zsh 相当的东西.

注意:我一直在互联网上找到" $0等同于${BASH_SOURCE[0]}",但这似乎是错误的:$0似乎是执行命令的名称.(这是argv[0],这是有道理的.)在我的剧本呼应$ 0( .zshrc)给出zsh$0,这是不一样的东西${BASH_SOURCE[0]}是.事实上,除了内部文件之外,${BASH_SOURCE[0]}似乎可以工作.zsh.zshrc

我真正在做什么.zshrc(那是行不通的):

echo ${BASH_SOURCE[0]}
source `dirname $0`/common-shell-rc.sh
Run Code Online (Sandbox Code Playgroud)

源失败($0zsh),echo输出为空行.

编辑: 显然,为了$0工作,我需要选项FUNCTION_ARGZERO选项集.有没有办法测试是否在脚本中设置了这个?(所以我可以暂时设置它)除非你设置nofunction_argzero,它显然是打开的,它在我的shell中.仍然无济于事$0.(我想b/c我不是一个功能.)

shell zsh

51
推荐指数
5
解决办法
2万
查看次数

未找到Conda命令

我已经安装了Miniconda,并已将环境变量添加export PATH="/home/username/miniconda3/bin:$PATH"到我的.bachrc,.bash_profile但仍然无法在我的终端中运行任何conda命令.

我错过了另一个设置吗?我顺便使用zsh.

python zsh anaconda miniconda

51
推荐指数
11
解决办法
10万
查看次数

我有多个 `.zcompdump` 文件,为什么我有多个文件?

我有多个.zcompdump*.

.rw-r--r--   47k myuser 13 Jul 10:02  .zcompdump
.rw-r--r--   47k myuser 14 Jul 16:52  .zcompdump-MacBook Pro (2)-5.7.1
.rw-r--r--   47k myuser  4 Jun  9:32  .zcompdump-MacBook Pro-5.7.1
.rw-r--r--   36k myuser  3 Jul 11:07  .zcompdump.macbook-pro-2.lan.54221
Run Code Online (Sandbox Code Playgroud)

其中哪一个zsh实际使用?我可以清除其中一些吗?

zsh

51
推荐指数
2
解决办法
4万
查看次数

如何在整齐的列中格式化bash命令的输出

我有一个函数输出许多行,我想在列中格式化.问题是任何特定的"单元格"(如果我可能使用该术语)的数据的宽度是可变的,所以将它管道化为像awk这样的东西并没有给我我想要的东西.

功能是"键"(不重要),我正在尝试这样的事情:

$ keys | awk '{ print $1"\t\t" $2 }'
Run Code Online (Sandbox Code Playgroud)

但是输出(它的一个片段,就是这样)看起来像这样:

"option-y"      yank-pop
"option-z"      execute-last-named-cmd
"option-|"      vi-goto-column
"option-~"      _bash_complete-word
"option-control-?"      backward-kill-word
"control-_"     undo
"control-?"     backward-delete-char
Run Code Online (Sandbox Code Playgroud)

我怎么能强迫东西留在整洁的柱子里呢?这是可能的awk,还是我需要使用其他东西?

bash awk zsh

50
推荐指数
2
解决办法
9万
查看次数

从命令行运行vim命令

关于从vim运行shell程序有很多SO问题.我想知道的是,是否有可能反过来 - 即

$ vim :BundleInstall
Run Code Online (Sandbox Code Playgroud)

例如,允许我作为脚本的一部分运行BundleInstall,而不是必须打开Vim并在首次运行时手动运行它?这可能吗?

vim bash shell zsh

50
推荐指数
2
解决办法
2万
查看次数

如何判断它是否使用zsh或bash

我有一个关于如何分辨用户使用的shell的问题.假设一个脚本,如果用户正在使用zsh,那么将PATH放到他的.zshrc,如果使用bash应该放入.bashrc.并相应地设置rvmrc.

#!/usr/bin/env bash
export PATH='/usr/local/bin:$PATH'" >> ~/.zshrc
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

我尝试过以下但不起作用:(

if [[ $0 == "bash ]]; then
  export PATH='/usr/local/bin:$PATH'" >> ~/.bashrc
elif [[ $0 == "zsh" ]]; then
  export PATH='/usr/local/bin:$PATH'" >> ~/.zshrc
fi

# ... more commands ...

if [[ $0 == "bash ]]; then
  [[ -s '/Users/`whoami`/.rvm/scripts/rvm' ]] && source '/Users/`whoami`/.rvm/scripts/rvm'" >> ~/.bashrc
  source ~/.bashrc
elif [[ $0 == "zsh" ]]; then
  [[ -s '/Users/`whoami`/.rvm/scripts/rvm' ]] && source '/Users/`whoami`/.rvm/scripts/rvm'" >> ~/.zshrc
  source ~/.zshrc
fi
Run Code Online (Sandbox Code Playgroud)

bash zsh sh

49
推荐指数
5
解决办法
4万
查看次数

zsh:可执行文件中的 CPU 类型错误:节点

我已经使用brew安装了nvm。之后,我通过nvm安装了16版本的node,并使用node -v检查当前版本,看看node是否正常工作。但是,当我安装版本 14 或任何其他以前的版本并运行 node -v 时,它会给出“zsh:可执行文件中的 CPU 类型错误:节点”消息,但我不知道该怎么做,安装节点 v17 和运行 node -v 按预期工作。以下是上述命令的片段。

在此输入图像描述

zsh node.js nvm

49
推荐指数
1
解决办法
6万
查看次数

标签 统计

zsh ×10

bash ×4

shell ×3

anaconda ×1

ansi-term ×1

awk ×1

emacs ×1

git ×1

miniconda ×1

node.js ×1

nvm ×1

prompt ×1

python ×1

sh ×1

terminal ×1

vim ×1