summary refs log tree commit diff stats
path: root/examples/bash_automatic_cd.sh
blob: bdac5757e891885f6b7dc107c4a742cf9bbcd7a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Compatible with ranger 1.4.2 through 1.7.*
#
# Automatically change the directory in bash after closing ranger
#
# This is a bash function for .bashrc to automatically change the directory to
# the last visited one after ranger quits.
# To undo the effect of this function, you can type "cd -" to return to the
# original directory.
# 
# On OS X 10 or later, replace `usr/bin/ranger` with `/usr/local/bin/ranger`.

function ranger-cd {
    tempfile="$(mktemp -t tmp.XXXXXX)"
    /usr/bin/ranger --choosedir="$tempfile" "${@:-$(pwd)}"
    test -f "$tempfile" &&
    if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
        cd -- "$(cat "$tempfile")"
    fi
    rm -f -- "$tempfile"
}

# This binds Ctrl-O to ranger-cd:
bind '"\C-o":"ranger-cd\C-m"'
d. Any combination of flags will work. Writing uppercase flags will negate the effect of all previously used lowercase flags of the same letter. Table of all flags: f fork program to background r run program as root, using sudo t run program in a separate terminal, as specified by $TERMCMD =item B<-l> List all possible ways to open the specified files. Each line will contain information in the format of I<id:label:flags:command>. I<id> is the identification number. I<label> is an arbitrary string that was specified for this command, I<flags> are the flags that are used by default, and I<command> is the command that is going to be executed. =item B<-p> I<KEYWORD> Pick a method to open the files. I<KEYWORD> is either the ID number listed by C<rifle -l> or a string that matches a label in the configuration file. =item B<-w> I<PROGRAM> Open the files with the program I<PROGRAM> =item B<-h>, B<--help> Print a list of options and exit. =back =head1 FILES rifle shares configuration files with ranger, though ranger is not required in order to use rifle. The configuration file F<rifle.conf> is expected to be at F<~/.config/ranger/rifle.conf>. This file specifies patterns for determining the commands to open files with. The syntax is described in the comments of the default F<rifle.conf> that ships with ranger. To obtain it, you need to run: C<ranger --copy-config=rifle> =head1 ENVIRONMENT =over 8 =item EDITOR Determines which editor to use for editing files (in the default F<rifle.conf>). =item PAGER Determines which pager to use for displaying files (in the default F<rifle.conf>). =item TERMCMD Determines the terminal emulator command for use with the I<t> flag. It is required that the value is the path to an executable file which accepts the "-e COMMAND" argument. =item XDG_CONFIG_HOME Specifies the directory for configuration files. Defaults to F<$HOME/.config>. =back =head1 EXAMPLES List all the different methods: $ rifle -l helloworld.py 0:editor::"$EDITOR" -- "$@" 1:pager::"$PAGER" -- "$@" 2:::python -- "$1" Display its content by opening it with "cat": $ rifle -w cat helloworld.py print("Hello World!") Run it by picking the method 2, which calls 'python -- "$1"': $ rifle -p 2 helloworld.py Hello World! Display the file in a pager inside a new terminal, run as root: $ rifle -p 1 -f tr helloworld.py