Tmux Rangerの統合:新しいウィンドウでテキストファイルを開く

Tmux Rangerの統合:新しいウィンドウでテキストファイルを開く

これにはいくつかの素晴らしいツールがあります: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.pyRanger 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.pyRanger 1.4 の場合)のク​​レジットです。本当に役に立ちます。

おすすめ記事