Linux

Tmux ranger 集成:在新窗格中打開文本文件

  • February 27, 2022

這裡我們有一些很棒的工具:tmux、ranger、vim… 配置 ranger 以在 tmux 新窗格中打開文件(當文本可編輯時)會很棒嗎?這很容易嗎?它是如何完成的?

自 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 env 的檢查,因此如果 ranger 已經在 tmux 會話下,則僅打開一個新的 tmux 窗格,如評論執行緒中所要求的那樣。

請注意,第一種方式取決於 bash([[如果是其他 shell,則需要調整部分),第二種方式取決於 Python shlex 或管道模組。

下面的歷史資訊

要以臨時方式在新窗格(右側)中打開 ranger 中目前選定的文件,您可以先轉到 ranger 的命令行(按:),然後按shell tmux splitw -h vim %f以下<Enter>鍵鍵入。

注意:以下這些方法不適用於帶有空格字元的文件名!

要通過一些鍵綁定來實現這一點,您可以在 ranger 的配置文件中進行設置。對於 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 + "'")

在使用 ranger 1.4 時,您需要一個~/.config/ranger/keys.py包含以下內容的文件:

#!/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)

使用上述設置,當您ef在遊俠的瀏覽器中按下時,它將打開一個新的 tmux 窗格,vim 編輯選定的文件。

該程式碼僅用於展示,可能需要涉及更多保護,例如檢查文件類型等。

歸功於遊俠的幫助手冊和$(pythonpkginstalldir)/ranger/defaults/rc.conf$(pythonpkginstalldir)/ranger/defaults/keys.py對於遊俠 1.4)。他們真的很有幫助。

引用自:https://unix.stackexchange.com/questions/82632