summaryrefslogtreecommitdiff
path: root/.config/ranger/commands.py
diff options
context:
space:
mode:
authorVito Graffagnino <vito@graffagnino.xyz>2020-09-08 18:10:49 +0100
committerVito Graffagnino <vito@graffagnino.xyz>2020-09-08 18:10:49 +0100
commit3b0142cedcde39e4c2097ecd916a870a3ced5ec6 (patch)
tree2116c49a845dfc0945778f2aa3e2118d72be428b /.config/ranger/commands.py
parent8cc927e930d5b6aafe3e9862a61e81705479a1b4 (diff)
Added the relevent parts of the .config directory. Alss add ssh config
Diffstat (limited to '.config/ranger/commands.py')
-rwxr-xr-x.config/ranger/commands.py162
1 files changed, 162 insertions, 0 deletions
diff --git a/.config/ranger/commands.py b/.config/ranger/commands.py
new file mode 100755
index 0000000..f814a8b
--- /dev/null
+++ b/.config/ranger/commands.py
@@ -0,0 +1,162 @@
+# This is a sample commands.py. You can add your own commands here.
+#
+# Please refer to commands_full.py for all the default commands and a complete
+# documentation. Do NOT add them all here, or you may end up with defunct
+# commands when upgrading ranger.
+
+# You always need to import ranger.api.commands here to get the Command class:
+from ranger.api.commands import *
+
+# A simple command for demonstration purposes follows.
+# -----------------------------------------------------------------------------
+
+# You can import any python module as needed.
+import os
+
+# Any class that is a subclass of "Command" will be integrated into ranger as a
+# command. Try typing ":my_edit<ENTER>" in ranger!
+
+
+class my_edit(Command):
+ # The so-called doc-string of the class will be visible in the built-in
+ # help that is accessible by typing "?c" inside ranger.
+ """:my_edit <filename>
+
+ A sample command for demonstration purposes that opens a file in an editor.
+ """
+
+ # The execute method is called when you run this command in ranger.
+ def execute(self):
+ # self.arg(1) is the first (space-separated) argument to the function.
+ # This way you can write ":my_edit somefilename<ENTER>".
+ if self.arg(1):
+ # self.rest(1) contains self.arg(1) and everything that follows
+ target_filename = self.rest(1)
+ else:
+ # self.fm is a ranger.core.filemanager.FileManager object and gives
+ # you access to internals of ranger.
+ # self.fm.thisfile is a ranger.container.file.File object and is a
+ # reference to the currently selected file.
+ target_filename = self.fm.thisfile.path
+
+ # This is a generic function to print text in ranger.
+ self.fm.notify("Let's edit the file " + target_filename + "!")
+
+ # Using bad=True in fm.notify allows you to print error messages:
+ if not os.path.exists(target_filename):
+ self.fm.notify("The given file does not exist!", bad=True)
+ return
+
+ # This executes a function from ranger.core.acitons, a module with a
+ # variety of subroutines that can help you construct commands.
+ # Check out the source, or run "pydoc ranger.core.actions" for a list.
+ self.fm.edit_file(target_filename)
+
+ # The tab method is called when you press tab, and should return a list of
+ # suggestions that the user will tab through.
+ # tabnum is 1 for <TAB> and -1 for <S-TAB> by default
+ def tab(self, tabnum):
+ # This is a generic tab-completion function that iterates through the
+ # content of the current directory.
+ return self._tab_directory_content()
+
+# https://github.com/ranger/ranger/wiki/Integrating-File-Search-with-fzf
+# Now simply bind this function to a key, by adding this to your ~/.config/ranger/rc.conf: map <C-f> fzf_select
+
+class fzf_select(Command):
+ """
+ :fzf_select
+
+ Find a file using fzf.
+
+ With a prefix argument select only directories.
+
+ See: https://github.com/junegunn/fzf
+ """
+ def execute(self):
+ import subprocess
+ import os.path
+
+ if self.quantifier: # match only directories
+ command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
+ else: # match files and directories
+ command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
+
+ fzf =self.fm.execute_command(command, universal_newlines=True, stdout=subprocess.PIPE)
+ stdout, stderr = fzf.communicate()
+ if fzf.returncode == 0:
+ fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
+ if os.path.isdir(fzf_file):
+ self.fm.cd(fzf_file)
+ else:
+ self.fm.select_file(fzf_file)
+
+
+class fzf_locate(Command):
+ """
+ :fzf_locate
+
+ Find a file using fzf.
+
+ With a prefix argument select only directories.
+
+ See: https://github.com/junegunn/fzf
+ """
+ def execute(self):
+ import subprocess
+ if self.quantifier:
+ command=" locate home MacOSX-Data1 MacOSX-Data3 user4 scratch scratch2 scratch3 | fzf -e -i"
+ else:
+ command=" locate home MacOSX-Data1 MacOSX-Data3 user4 scratch scratch2 scratch3 | fzf -e -i"
+
+ fzf =self.fm.execute_command(command, stdout=subprocess.PIPE)
+ stdout, stderr = fzf.communicate()
+
+ if fzf.returncode == 0:
+ fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
+ if os.path.isdir(fzf_file):
+ self.fm.cd(fzf_file)
+ else:
+ self.fm.select_file(fzf_file)
+
+# fzf_fasd - Fasd + Fzf + Ranger (Interactive Style)
+class fzf_fasd(Command):
+ """
+ :fzf_fasd
+
+ Jump to a file or folder using Fasd and fzf
+
+ URL: https://github.com/clvv/fasd
+ URL: https://github.com/junegunn/fzf
+ """
+ def execute(self):
+ import subprocess
+ if self.quantifier:
+ command="fasd | fzf -e -i --tac --no-sort | awk '{print $2}'"
+ else:
+ command="fasd | fzf -e -i --tac --no-sort | awk '{print $2}'"
+ fzf = self.fm.execute_command(command, stdout=subprocess.PIPE)
+ stdout, stderr = fzf.communicate()
+ if fzf.returncode == 0:
+ fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
+ if os.path.isdir(fzf_file):
+ self.fm.cd(fzf_file)
+ else:
+ self.fm.select_file(fzf_file)
+
+# Fasd with ranger (Command Line Style)
+# https://github.com/ranger/ranger/wiki/Commands
+class fasd(Command):
+ """
+ :fasd
+
+ Jump to directory using fasd
+ URL: https://github.com/clvv/fasd
+ """
+ def execute(self):
+ import subprocess
+ arg = self.rest(1)
+ if arg:
+ directory = subprocess.check_output(["fasd", "-d"]+arg.split(), universal_newlines=True).strip()
+ self.fm.cd(directory)
+