Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Post History

71%
+3 −0
Q&A how to update RPROMPT each time a key is pressed in zsh

In zsh, I want to create a function that updates RPROMPT when I have typed cd .. into the terminal. As a starting point, I know I can, for example, add the + character to my RBUFFER when I have typ...

0 answers  ·  posted 3d ago by Trevor‭  ·  edited 3d ago by Trevor‭

Question terminal zsh
#2: Post edited by user avatar Trevor‭ · 2025-06-04T02:39:12Z (3 days ago)
  • In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the prompt. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`:
  • ```zsh
  • function self-insert() {
  • zle .self-insert
  • if [[ $BUFFER == "cd .." ]]; then
  • RBUFFER+="+"
  • fi
  • }
  • zle -N self-insert
  • ```
  • I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows:
  • ```zsh
  • function self-insert() {
  • zle .self-insert
  • if [[ $BUFFER == "cd .." ]]; then
  • RPROMPT="ABC"
  • zle reset-prompt
  • fi
  • }
  • zle -N self-insert
  • ```
  • The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.
  • In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the terminal. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`:
  • ```zsh
  • function self-insert() {
  • zle .self-insert
  • if [[ $BUFFER == "cd .." ]]; then
  • RBUFFER+="+"
  • fi
  • }
  • zle -N self-insert
  • ```
  • I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows:
  • ```zsh
  • function self-insert() {
  • zle .self-insert
  • if [[ $BUFFER == "cd .." ]]; then
  • RPROMPT="ABC"
  • zle reset-prompt
  • fi
  • }
  • zle -N self-insert
  • ```
  • The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.
#1: Initial revision by user avatar Trevor‭ · 2025-06-04T02:38:13Z (3 days ago)
how to update RPROMPT each time a key is pressed in zsh
In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the prompt. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`:
```zsh
function self-insert() {
  zle .self-insert
  if [[ $BUFFER == "cd .." ]]; then
    RBUFFER+="+"
  fi
  }
zle -N self-insert
```

I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows:
```zsh
function self-insert() {
  zle .self-insert
  if [[ $BUFFER == "cd .." ]]; then
    RPROMPT="ABC"
    zle reset-prompt
  fi
  }
zle -N self-insert
```
The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.