标签: zshrc

zsh:强制单选项卡完成

我最近从 bash 切换到 zsh。如何实现以下选项卡完成行为:

输入第一个字母,然后按TAB。完成输入直到第一个不明确的字母并立即显示选项/替代方案。

目前,它的行为是这样的:

# ls .m*
  .mysql_history  .matlab  .matplotlib  .mono  .mozilla
# cd .m<TAB>
  .matlab/  .matplotlib/  .mono/  .mozilla/
# cd .mo<TAB>
  .mono/  .mozilla/
# cd .ma<TAB><TAB> (here two tabs are necessary: the first one completes to .mat, 
                    the second one show .matlab and .matplotlib)
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,我想去掉第二个选项卡。zshs 完成系统可以做到这一点吗?

这是我的当前.zshrc

HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=1000

# Options
setopt autocd

# Aliases
alias ls='ls --color -h --group-directories-first'
alias ll='ls -laF --color -h --group-directories-first'
alias la='ls -A --color -h --group-directories-first' …
Run Code Online (Sandbox Code Playgroud)

zsh zshrc zsh-completion

4
推荐指数
1
解决办法
1456
查看次数

zsh:获取调用函数的脚本的文件名

在函数内部,如何获取调用该函数的任何脚本的文件名?

通过提示扩展,%x提供定义函数的文件的名称。%N提供函数名称。如何获取调用该函数的文件的名称?

这对于报告每个启动脚本的运行时间很有用,例如:

~/.zshenv:

function start_timer() {
  start_time=$(date +%s.%N)
}
function stop_timer() {
  stop_time=$(date +%s.%N)
  elapsed_time=$((stop_time-start_time))
  echo "$SCRIPTNAME took $elapsed_time seconds"
}
start_timer
# initialize env...
end_timer # "~/.zshenv took 0 seconds"
Run Code Online (Sandbox Code Playgroud)

~/.zshrc:

start_timer
# initialize interactive shell...
end_timer # "~/.zshrc took 2 seconds"
Run Code Online (Sandbox Code Playgroud)

~/.zlogin:

start_timer
# initialize login shell...
end_timer # "~/.zlogin took 2 seconds"
Run Code Online (Sandbox Code Playgroud)

zsh zshrc

4
推荐指数
1
解决办法
3578
查看次数

编辑 ~/.zshrc 文件

我是一个完全的新手,所以我想我只是错过了一步,但不知道。

我正在关注 Rails 的教程。很多步骤都说“ and then editing the ~/.zshrc file.”,但我没有任何 ~/.zshrc 文件。我正在查看 Sublime 中的文件夹。此外,以下 ~/.zprofile、~/.zlogin、~/.zlogout 都不存在。不过,在我的主文件下,有 .zprezto 文件夹。也没有zshenv...

我只是创建文件吗?似乎它们应该从某个地方下载。我在 OS X 上使用终端。所以迷路了。

echo 'write whatever' >.zshrc
Run Code Online (Sandbox Code Playgroud)

提前致谢!

zsh ruby-on-rails zshrc

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

是否可以在zsh中绑定Shift + Enter键?

我开始在macOS Sierra上使用zsh。我希望具有以下键映射:

  • 输入=>接受行
  • Shift-Enter =>接受并按住

但是,我似乎无法区分两者。我只能获取Enter和Esc-Enter,但不能获得Shift-Enter:

bindkey "^M"   accept-line     # Enter
bindkey "^[^M" accept-and-hold # Esc-Enter
bindkey "????" accept-and-hold # Shift-Enter
Run Code Online (Sandbox Code Playgroud)

是否可以检测和处理Shift-Enter?

zsh zshrc

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

如何在不进行任何自定义的情况下运行 zsh?

我想运行 Zsh 而不加载任何我的.zshrc、Oh-my-zsh 等,就像我进行了全新安装而没有任何自定义内容一样。(喜欢emacs -q。)

有这方面的标志吗?否则,我可以为其设置某种“配置文件”吗?

zsh zshrc

4
推荐指数
1
解决办法
2663
查看次数

我的 ZSH 补全在启动时不起作用,但当我获取 .zshrc 时它们会起作用(Mac)

标题中有一个简单的总结,但需要进一步解释:

每当我打开终端(iterm2)时,我都会加载到 zsh 但完成似乎不起作用,然后当我手动运行时source .zshrc它会完全加载。我尝试移动 .zshrc 文件中的内容以查看加载顺序是否不正确,但它没有解决任何问题。

我的 .zshrc 文件:

# ZSH customization
export ZSH="/Users/user/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh
plugins=(git docker asdf zsh-autosuggestions zsh-completions zsh-history-substring-search zsh-syntax-highlighting)
autoload -U compinit && compinit
# color
. "/Users/user/.bin/lscolors.sh" #big color file
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
# alias
alias ip="curl ifconfig.me"
alias ls="gls --color --group-directories-first -hp"
alias ydl="youtube-dl"
alias py="python"
alias code="codium"
# env
export PATH="/usr/local/opt/ncurses/bin:/usr/local/sbin:/usr/local/opt/openssl@1.1/bin:$PATH:/opt/metasploit-framework/bin:$HOME/.bin:$HOME/.cargo/bin"
export EDITOR=/usr/local/bin/codium
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/ncurses/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/ncurses/include"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/ncurses/lib/pkgconfig"
# fzf
[ -f ~/.fzf.zsh ] …
Run Code Online (Sandbox Code Playgroud)

macos zsh autocomplete zshrc oh-my-zsh

4
推荐指数
1
解决办法
6538
查看次数

fzf 键绑定不适用于 zsh vi 模式

在我开始使用 zsh vi 模式后,fzf ctrl+r 不再起作用。我的 zshrc 文件在这里:

function zvm_config() {
  ZVM_LINE_INIT_MODE=$ZVM_MODE_INSERT
  ZVM_VI_INSERT_ESCAPE_BINDKEY=jk
}
source /opt/homebrew/opt/zplug/init.zsh
zplug "jeffreytse/zsh-vi-mode"
# Install plugins if there are plugins that have not been installed
if ! zplug check --verbose; then
    printf "Install? [y/N]: "
    if read -q; then
        echo; zplug install
    fi
fi

# Then, source plugins and add commands to $PATH
zplug load --verbose

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
Run Code Online (Sandbox Code Playgroud)

如果我单独运行 source ~/.fzf.zsh 那么它就会工作。

zsh zshrc fzf

4
推荐指数
1
解决办法
1390
查看次数

避免在zsh命令行中递归

好吧,我几个小时前切换到zsh而且我在一个巨大的配置 - 傻瓜疯狂,但这对我来说可能是一个太大的咬合:

我想做一个分隔符autopairnig,例如type(并且它insert().首先失败:

bindkey -s "(" "()"

第二次失败:

function autopair () {
zle -U "()"
zle backward-char
}
zle -N autopair autopair
bindkey "(" autopair
Run Code Online (Sandbox Code Playgroud)

我认为两者都失败了,因为zsh试图递归"("插入(-U似乎明确地说明).有没有办法避免这种情况?echo -ne "()"在函数的第一行代入当然避免了这个但是不可编辑...任何想法如何强制插入?

奖励点(比喻说:)):我想在插入后将光标设置在括号之间.然而zle backward-char在我的功能中没有做任何事......

想象一下这有多棒!谢谢!

shell zsh zshrc

3
推荐指数
1
解决办法
216
查看次数

rbenv版本显示在zsh右键提示不刷新

我的.zshrc中有以下代码:

local ruby_version=''
if which rvm-prompt &> /dev/null; then
  ruby_version="$(rvm-prompt i v g)"
else
  if which rbenv &> /dev/null; then
    ruby_version="$(rbenv version | sed -e "s/ (set.*$//")"
  fi
fi
Run Code Online (Sandbox Code Playgroud)

我在RPS1提示符中有这个代码:

RPS1='${PR_GREEN}$(virtualenv_info)%{$reset_color%} ${PR_RED}${ruby_version}%{$reset_color%}'
Run Code Online (Sandbox Code Playgroud)

(为简洁起见,我没有显示设置PR_颜色或确定虚拟环境的代码 - 这两者都起作用.)

创建新shell时(iTerm2中的新窗口或新选项卡),Ruby信息是正确的.但是,如果我切换到使用不同Ruby的项目(由.ruby-version文件确定),则右侧提示中显示的Ruby信息不会刷新.如果我重新获取.zshrc文件,则右键提示会刷新.

我是否需要在函数中包含确定Ruby版本的代码?顺便说一句,我也有setopt promptsubst.zshrc.

当我更改目录时,我错过了什么阻止了右键提示的刷新?

zsh zshrc rvm rbenv

3
推荐指数
1
解决办法
3289
查看次数

无法安装prezto

我是一个oh-my-zsh用户但决定切换到prezto.我按照他们的github页面上的步骤操作:https://github.com/sorin-ionescu/prezto

卸载了oh-my-zsh,git克隆了prezto.不确定我是否清楚地理解了第3步,但现在我的家庭目录下确实有.zshrc,.zprofile,.zpreztorc.但是,当我用zsh打开一个新选项卡时,我仍然看到最基本的zsh设置.(例如,我没有看到sorin主题).有关如何调试我的安装的任何想法?

我使用iTerm2在最新的OS X上运行它.

macos zsh zshrc oh-my-zsh prezto

3
推荐指数
1
解决办法
3106
查看次数

标签 统计

zsh ×10

zshrc ×10

macos ×2

oh-my-zsh ×2

autocomplete ×1

fzf ×1

prezto ×1

rbenv ×1

ruby-on-rails ×1

rvm ×1

shell ×1

zsh-completion ×1