mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	taken from [here](http://www.zsh.org/mla/users/2008/msg01013.html) We want pressing v in command mode to take us to an editor (defined by the $VISUAL or $EDITOR variable or vi) to edit the current contents of the command line which (I believe) is a standard feature of bash vi-mode or other readline prompts (see [here](http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf) and [here](http://www.catonmat.net/blog/bash-vi-editing-mode-cheat-sheet/) for source).
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# Ensures that $terminfo values are valid and updates editor information when
 | 
						|
# the keymap changes.
 | 
						|
function zle-keymap-select zle-line-init zle-line-finish {
 | 
						|
  # The terminal must be in application mode when ZLE is active for $terminfo
 | 
						|
  # values to be valid.
 | 
						|
  if (( ${+terminfo[smkx]} )); then
 | 
						|
    printf '%s' ${terminfo[smkx]}
 | 
						|
  fi
 | 
						|
  if (( ${+terminfo[rmkx]} )); then
 | 
						|
    printf '%s' ${terminfo[rmkx]}
 | 
						|
  fi
 | 
						|
 | 
						|
  zle reset-prompt
 | 
						|
  zle -R
 | 
						|
}
 | 
						|
 | 
						|
zle -N zle-line-init
 | 
						|
zle -N zle-line-finish
 | 
						|
zle -N zle-keymap-select
 | 
						|
zle -N edit-command-line
 | 
						|
 | 
						|
 | 
						|
bindkey -v
 | 
						|
 | 
						|
# allow v to edit the command line (standard behaviour)
 | 
						|
autoload -Uz edit-command-line
 | 
						|
bindkey -M vicmd 'v' edit-command-line
 | 
						|
 | 
						|
# if mode indicator wasn't setup by theme, define default
 | 
						|
if [[ "$MODE_INDICATOR" == "" ]]; then
 | 
						|
  MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
 | 
						|
fi
 | 
						|
 | 
						|
function vi_mode_prompt_info() {
 | 
						|
  echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}"
 | 
						|
}
 | 
						|
 | 
						|
# define right prompt, if it wasn't defined by a theme
 | 
						|
if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then
 | 
						|
  RPS1='$(vi_mode_prompt_info)'
 | 
						|
fi
 |