{"id":674,"date":"2017-12-16T09:08:24","date_gmt":"2017-12-16T09:08:24","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=674"},"modified":"2018-06-17T11:09:17","modified_gmt":"2018-06-17T11:09:17","slug":"ranger-file-manager","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=674","title":{"rendered":"ranger file manager"},"content":{"rendered":"<p><a href=\"https:\/\/ranger.github.io\/\" target=\"_blank\" rel=\"noopener\">Ranger<\/a> ist ein genialer, python-basierter File-Manager f\u00fcr die Konsole (<a href=\"https:\/\/github.com\/ranger\/ranger\/blob\/master\/LICENSE\" target=\"_blank\" rel=\"noopener\">GPLv3<\/a>). Keybindings sind identisch zu vim anwendbar, was die Bedienung sehr angenehm und effizient macht.<br \/>\nEin anderer (neben mc) Konsolen-Filemanager mit vim-Keybindings ist <a href=\"https:\/\/github.com\/vifm\/vifm\" target=\"_blank\" rel=\"noopener\">vifm<\/a>, kann jedoch nicht viel dazu sagen.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-761\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/11\/ranger.png\" alt=\"\" width=\"578\" height=\"304\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/11\/ranger.png 578w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2017\/11\/ranger-300x158.png 300w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/p>\n<p>Ich setze Ranger jetzt erst seit einigen Wochen gelegentlich ein, jedoch starte ich immer \u00f6fter nur noch Ranger und lasse nautilus etc. &#8220;links liegen&#8221;&#8230; \ud83d\ude09<\/p>\n<h2>Initiale Config<\/h2>\n<p>M\u00f6chte man eine &#8220;Basic&#8221;-Konfiguration nach der Installation, k\u00f6nnen diese via Parameter &#8220;&#8211;copy-config=all&#8221; angelegt werden.<\/p>\n<pre class=\"lang:default decode:true\">peter@peanut:~$ ranger --copy-config=all\r\ncreating: \/home\/peter\/.config\/ranger\/rifle.conf\r\ncreating: \/home\/peter\/.config\/ranger\/commands.py\r\ncreating: \/home\/peter\/.config\/ranger\/commands_full.py\r\ncreating: \/home\/peter\/.config\/ranger\/rc.conf\r\ncreating: \/home\/peter\/.config\/ranger\/scope.sh\r\n\r\n&gt; Please note that configuration files may change as ranger evolves.\r\nIt's completely up to you to keep them up to date.\r\n\r\n&gt; To stop ranger from loading both the default and your custom rc.conf,\r\nplease set the environment variable RANGER_LOAD_DEFAULT_RC to FALSE.<\/pre>\n<p><a href=\"https:\/\/github.com\/ranger\/ranger\/wiki\/Image-Previews\" target=\"_blank\" rel=\"noopener\">Bild-Vorschau<\/a> in Ranger anzeigen<\/p>\n<pre class=\"lang:default decode:true\">set preview_images true<\/pre>\n<p>Im gnome-terminal oder terminology werden die Previews jedoch nicht sch\u00f6n aktualisiert (siehe auch <a href=\"https:\/\/github.com\/ranger\/ranger\/issues\/859\" target=\"_blank\" rel=\"noopener\">Issue #859<\/a>). Mit terminator, lxterm oder urxvt (Package\u00a0<a href=\"https:\/\/packages.debian.org\/search?keywords=rxvt-unicode-256color&amp;searchon=names&amp;suite=all&amp;section=all\" target=\"_blank\" rel=\"noopener\">rxvt-unicode-256color<\/a>) beispielsweise besteht dieses Problem jedoch nicht&#8230;<\/p>\n<h2>Wichtigste Befehle<\/h2>\n<p>&#8220;yy&#8221; (kopieren), &#8220;pp&#8221; (einf\u00fcgen) und &#8220;dd&#8221; (verschieben &#8211; um sp\u00e4ter irgendwo anders einzuf\u00fcgen wie beim Kopieren). Komplexere Funktionen werden mit &#8220;:&#8221; aufgerufen (bspw. :bulkrename &#8211; was ebenfalls ein geniales Teil ist. Siehe :help [c]ommands). Mehrere Files\/Directories k\u00f6nnen mit der Leertaste markiert werden.<\/p>\n<p>Eine Shell im aktuellen Verzeichnis kann mit &#8220;S&#8221; gestartet werden. Auch Tabs sind mit Ranger m\u00f6glich mit &#8220;Ctrl-N&#8221;. Einen Tab schliessen kann man mit &#8211; wie schon zu erwarten &#8211; &#8220;:q&#8221;<\/p>\n<p>Auf <a href=\"https:\/\/github.com\/ranger\/ranger\/wiki\/Official-user-guide\" target=\"_blank\" rel=\"noopener\">Github ist eine detaillierte Dokumentation<\/a> zu Ranger.<\/p>\n<h2>Eigene Mappings<\/h2>\n<p>Genial ist auch die M\u00f6glichkeit, jenste Varianten von eigenen Keybindings zu erstellen. Hier nur mal ein Beispiel, spiele hier immer noch rum&#8230;<\/p>\n<pre class=\"lang:default decode:true \">#move to documents\r\nmap mdo shell mv %%s ~\/Documents\r\n#tab mit documents (wechseln zwischen tabs mit tab ;-))\r\nmap tdo tab_new ~\/Documents\r\n#go to documents folder\r\nmap gdo cd ~\/Documents\r\n#go to pictures folder\r\nmap gp cd ~\/Pictures\r\n#go to work folder\r\nmap gw cd ~\/work\r\n#go to downloads\r\nmap gdl cd ~\/Downloads<\/pre>\n<p>Schon anhand dieses kleinen Beispiels sieht man das Potential &#8211; hier kann man wirklich das ganze so gestalten, dass man sehr effizient und schnell arbeiten kann&#8230;<\/p>\n<h2>Mounten von USB-Sticks \/ -Disks<\/h2>\n<p>Zum mounten von Massenspeicher verwendet man udisksctl (Package udisks2).<\/p>\n<p>Via lsblk checkt man die angeschlossenen Drives, dann kann man mit udisksctl mounten bzw. wieder ausmounten:<\/p>\n<pre class=\"lang:default decode:true\">udisksctl [un]mount -b \/dev\/sdX<\/pre>\n<p>Ich denke, eine andere Alternative k\u00f6nnte auch die Verwendung von pmount sein, was ich aber nicht angeschaut hab.<\/p>\n<h2>Ranger als Filechooser in vim<\/h2>\n<p>Im Ranger-Repo gibt&#8217;s ein <a href=\"https:\/\/github.com\/ranger\/ranger\/blob\/master\/examples\/vim_file_chooser.vim\" target=\"_blank\" rel=\"noopener\">vim-Snippet<\/a> (und\/oder <a href=\"https:\/\/github.com\/ipod825\/vim-netranger\" target=\"_blank\" rel=\"noopener\">vim-netranger<\/a>), das Ranger als Filechooser einsetzbar macht. Ich glaube, das ist nur bis Version 1.7.* kompatibel. Es gibt jedoch eine andere <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=5127#0.5\" target=\"_blank\" rel=\"noopener\">Implementation<\/a>, hab&#8217;s jedoch selbst nicht angeschaut. Genrell m\u00f6chte ja so wenig wie m\u00f6glich an vim \u00e4ndern und die integrierten Funktionen verwenden&#8230;.<\/p>\n<p><del>Ich hab&#8217;s bei mir folgendermassen integriert<\/del><\/p>\n<pre class=\"lang:default decode:true \">if exists('~\/.vim\/vim_file_chooser.vim')\r\n  source ~\/.vim\/vim_file_chooser.vim\r\nendif<\/pre>\n<p><del>So gibt&#8217;s keinen Fehler, sollte das File nicht vorhanden sein&#8230;<\/del><\/p>\n<p><em>Update 17.6.2018: Alternativen erg\u00e4nzt<\/em><\/p>\n<h2>Alternativen<\/h2>\n<p>Zu den bekannten Alternativen (<a href=\"https:\/\/github.com\/vifm\/vifm\" target=\"_blank\" rel=\"noopener\">vifm<\/a>, <a href=\"https:\/\/midnight-commander.org\/\" target=\"_blank\" rel=\"noopener\">mc<\/a>,&#8230;) hat sich nun auch <a href=\"https:\/\/github.com\/gokcehan\/lf\" target=\"_blank\" rel=\"noopener\">lf<\/a> gesellt. lf ist zwar noch in einem fr\u00fchen Status, schaut jedoch auch vielversprechend aus. Image Previews und viele <a href=\"https:\/\/www.reddit.com\/r\/commandline\/comments\/8rjpij\/lf_terminal_file_manager_r5_is_released\/\" target=\"_blank\" rel=\"noopener\">kleinere Dinge<\/a> beherrscht es aber noch nicht, deswegen ist es f\u00fcr mich (derzeit) noch keine Alternative zu Ranger. Aber werde es ein bisschen beobachten.<\/p>\n","protected":false},"excerpt":{"rendered":"Ranger ist ein genialer, python-basierter File-Manager f\u00fcr die Konsole (GPLv3). Keybindings sind identisch zu vim anwendbar, was die Bedienung sehr angenehm und effizient macht. Ein anderer (neben mc) Konsolen-Filemanager mit vim-Keybindings ist vifm, kann jedoch nicht viel dazu sagen. Ich setze Ranger jetzt erst seit einigen Wochen gelegentlich ein, jedoch&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,4],"tags":[],"class_list":["post-674","post","type-post","status-publish","format-standard","hentry","category-cli","category-debiangnu-linux"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=674"}],"version-history":[{"count":30,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/674\/revisions"}],"predecessor-version":[{"id":1948,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/674\/revisions\/1948"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}