これにはいくつかの素晴らしいツールがあります:tmux、ranger、vim ... tmux newpaneでファイルを開くようにレンジャーを設定することはお勧めできませんか(テキストが編集可能な場合)?簡単ですか?どうやってやるの?
ベストアンサー1
2022年以降、Python 2はサポートされなくなりました。これはHomebrewを介してmacOSのRanger 1.9.3で私に効果的でした。
map ef shell [[ -n $TMUX ]] && tmux split-window -h vim %f
または
map ef eval exec('try: from shlex import quote\nexcept ImportError: from pipes import quote\nif "TMUX" in os.environ: fm.run("tmux splitw -h vim " + quote(fm.thisfile.basename))')
それに基づいています公式レンジャーズウィキわずかな調整:
- 何らかの理由で対応する
rifle
コマンドがないため、それを使用しましたvim
。 - コメントスレッドが要求したように、レンジャーがすでにtmuxセッションの下にある場合にのみ新しいtmuxウィンドウが開くように$ TMUX envのチェックが追加されました。
最初の方法はbashによって異なります(他のシェルの場合は[[
部分を調整する必要があります)、2番目の方法はPython shlexまたはPipesモジュールによって異なります。
歴史的な情報は次のとおりです。
新しいウィンドウ(右側)のRangerで現在選択されているファイルを一時的に開くには、まずRangerのコマンドラインに移動して(:)を押してから、次のようにshell tmux splitw -h vim %f
入力します。<Enter>
注:以下の方法は、スペース文字を含むファイル名では機能しません!
いくつかのキーバインディングを使用してこれを達成するには、レンジャーの設定ファイルで設定できます。 Ranger 1.6+の場合、キーバインディングはrc.conf
。そのため、~/.config/ranger/rc.conf
次のように使用してください。
map ef eval if 'TMUX' in os.environ.keys(): fm.execute_console("shell tmux splitw -h 'vim " + fm.thisfile.basename + "'")
~/.config/ranger/keys.py
Ranger 1.4を使用している場合は、次の内容を含むファイルが必要です。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Customized key bindings.
from ranger.api.keys import *
map = keymanager.get_context('browser')
@map("ef")
def edit_file_in_new_tmux_pane(arg):
command = "shell tmux splitw -h 'vim " + arg.fm.env.cf.basename + "'"
if 'TMUX' in os.environ.keys(): arg.fm.execute_console(command)
上記の設定で Ranger のブラウザを押すと、ef
新しい tmux ウィンドウが開き、vim を使用して選択したファイルを編集します。
このコードはデモ用なので、ファイル形式の確認などの追加の保護が必要な場合があります。
Ranger のヘルプマニュアル$(pythonpkginstalldir)/ranger/defaults/rc.conf
($(pythonpkginstalldir)/ranger/defaults/keys.py
Ranger 1.4 の場合)のクレジットです。本当に役に立ちます。