mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	* use https everywhere * use https links on the files that are left Also, removed some broken links and updated redirections.
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# Code from Mikael Magnusson: https://www.zsh.org/mla/users/2011/msg00367.html
 | 
						|
#
 | 
						|
# Requires xterm, urxvt, iTerm2 or any other terminal that supports bracketed
 | 
						|
# paste mode as documented: https://www.xfree86.org/current/ctlseqs.html
 | 
						|
 | 
						|
# create a new keymap to use while pasting
 | 
						|
bindkey -N paste
 | 
						|
# make everything in this keymap call our custom widget
 | 
						|
bindkey -R -M paste "^@"-"\M-^?" paste-insert
 | 
						|
# these are the codes sent around the pasted text in bracketed
 | 
						|
# paste mode.
 | 
						|
# do the first one with both -M viins and -M vicmd in vi mode
 | 
						|
bindkey '^[[200~' _start_paste
 | 
						|
bindkey -M paste '^[[201~' _end_paste
 | 
						|
# insert newlines rather than carriage returns when pasting newlines
 | 
						|
bindkey -M paste -s '^M' '^J'
 | 
						|
 | 
						|
zle -N _start_paste
 | 
						|
zle -N _end_paste
 | 
						|
zle -N zle-line-init _zle_line_init
 | 
						|
zle -N zle-line-finish _zle_line_finish
 | 
						|
zle -N paste-insert _paste_insert
 | 
						|
 | 
						|
# switch the active keymap to paste mode
 | 
						|
function _start_paste() {
 | 
						|
  bindkey -A paste main
 | 
						|
}
 | 
						|
 | 
						|
# go back to our normal keymap, and insert all the pasted text in the
 | 
						|
# command line. this has the nice effect of making the whole paste be
 | 
						|
# a single undo/redo event.
 | 
						|
function _end_paste() {
 | 
						|
#use bindkey -v here with vi mode probably. maybe you want to track
 | 
						|
#if you were in ins or cmd mode and restore the right one.
 | 
						|
  bindkey -e
 | 
						|
  LBUFFER+=$_paste_content
 | 
						|
  unset _paste_content
 | 
						|
}
 | 
						|
 | 
						|
function _paste_insert() {
 | 
						|
  _paste_content+=$KEYS
 | 
						|
}
 | 
						|
 | 
						|
function _zle_line_init() {
 | 
						|
  # Tell terminal to send escape codes around pastes.
 | 
						|
  [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004h'
 | 
						|
}
 | 
						|
 | 
						|
function _zle_line_finish() {
 | 
						|
  # Tell it to stop when we leave zle, so pasting in other programs
 | 
						|
  # doesn't get the ^[[200~ codes around the pasted text.
 | 
						|
  [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004l'
 | 
						|
}
 | 
						|
 |