mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# System clipboard integration
 | 
						|
#
 | 
						|
# This file has support for doing system clipboard copy and paste operations
 | 
						|
# from the command line in a generic cross-platform fashion.
 | 
						|
#
 | 
						|
# On OS X and Windows, the main system clipboard or "pasteboard" is used. On other
 | 
						|
# Unix-like OSes, this considers the X Windows CLIPBOARD selection to be the
 | 
						|
# "system clipboard", and the X Windows `xclip` command must be installed.
 | 
						|
 | 
						|
# clipcopy - Copy data to clipboard
 | 
						|
#
 | 
						|
# Usage:
 | 
						|
#
 | 
						|
#  <command> | clipcopy    - copies stdin to clipboard
 | 
						|
#
 | 
						|
#  clipcopy <file>         - copies a file's contents to clipboard
 | 
						|
#
 | 
						|
function clipcopy() {
 | 
						|
  emulate -L zsh
 | 
						|
  local file=$1
 | 
						|
  if [[ $OSTYPE == darwin* ]]; then
 | 
						|
    if [[ -z $file ]]; then
 | 
						|
      pbcopy
 | 
						|
    else
 | 
						|
      cat $file | pbcopy
 | 
						|
    fi
 | 
						|
  elif [[ $OSTYPE == cygwin* ]]; then
 | 
						|
    if [[ -z $file ]]; then
 | 
						|
      cat > /dev/clipboard
 | 
						|
    else
 | 
						|
      cat $file > /dev/clipboard
 | 
						|
    fi
 | 
						|
  else
 | 
						|
    if which xclip &>/dev/null; then
 | 
						|
      if [[ -z $file ]]; then
 | 
						|
        xclip -in -selection clipboard
 | 
						|
      else
 | 
						|
        xclip -in -selection clipboard $file
 | 
						|
      fi
 | 
						|
    elif which xsel &>/dev/null; then
 | 
						|
      if [[ -z $file ]]; then
 | 
						|
        xsel --clipboard --input 
 | 
						|
      else
 | 
						|
        cat "$file" | xsel --clipboard --input
 | 
						|
      fi
 | 
						|
    else
 | 
						|
      print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
 | 
						|
      return 1
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
# clippaste - "Paste" data from clipboard to stdout
 | 
						|
#
 | 
						|
# Usage:
 | 
						|
#
 | 
						|
#   clippaste   - writes clipboard's contents to stdout
 | 
						|
#
 | 
						|
#   clippaste | <command>    - pastes contents and pipes it to another process
 | 
						|
#
 | 
						|
#   clippaste > <file>      - paste contents to a file
 | 
						|
#
 | 
						|
# Examples:
 | 
						|
#
 | 
						|
#   # Pipe to another process
 | 
						|
#   clippaste | grep foo
 | 
						|
#
 | 
						|
#   # Paste to a file
 | 
						|
#   clippaste > file.txt
 | 
						|
function clippaste() {
 | 
						|
  emulate -L zsh
 | 
						|
  if [[ $OSTYPE == darwin* ]]; then
 | 
						|
    pbpaste
 | 
						|
  elif [[ $OSTYPE == cygwin* ]]; then
 | 
						|
    cat /dev/clipboard
 | 
						|
  else
 | 
						|
    if which xclip &>/dev/null; then
 | 
						|
      xclip -out -selection clipboard
 | 
						|
    elif which xsel &>/dev/null; then
 | 
						|
      xsel --clipboard --output
 | 
						|
    else
 | 
						|
      print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
 | 
						|
      return 1
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
}
 |