ついにコマンドの自作。
問題
rangerはspace
キーで複数ファイル選択できるし、yp
でパス文字列をコピーできる。なのに、複数ファイル選択してyp
すると、ひとつのファイルパスしかコピーされない。
選択した全ファイルのパスをコピーしたい。
解決
コマンドをPythonで実装する。
ソースコード
~/.config/ranger/commands.py
に以下を追記する。
# 選択したファイルのパスを取得する class copy_path(Command): def execute(self): from subprocess import run from io import StringIO with StringIO() as buf: buf.write('\\n'.join([f.path for f in self.fm.thistab.get_selection()])) # f.basename, is_directory, load_content() run('echo "{}" | xsel -b'.format(buf.getvalue()), shell=True)
/home/pi/.config/ranger/rc.conf
を以下のように編集する。
#map yp shell -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b map yp copy_path
(map yp
でyp
コマンドに対応する処理を定義する)
動作確認
開発環境
前回
- http://ytyaru.hatenablog.com/entry/2019/02/21/000000
- http://ytyaru.hatenablog.com/entry/2019/02/22/000000
- http://ytyaru.hatenablog.com/entry/2019/02/26/000000
- http://ytyaru.hatenablog.com/entry/2019/03/12/000000
- http://ytyaru.hatenablog.com/entry/2019/03/13/000000
- http://ytyaru.hatenablog.com/entry/2019/03/14/000000