Tmux Ranger 集成:在新窗格中打开文本文件

Tmux Ranger 集成:在新窗格中打开文本文件

这里我们有一些令人惊叹的工具:tmux、ranger、vim...配置 ranger 在 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 env 的检查,因此仅当 ranger 已位于 tmux 会话下时才打开一个新的 tmux 窗格,如评论线程中的要求。

请注意,第一种方式取决于 bash(如果是其他 shell,则需要调整[[部分),第二种方式取决于 Python shlex 或 Pipes 模块。

历史信息如下

要以临时方式在新窗格(右侧)中打开 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)

通过上述设置,当您按efRanger 的浏览器时,它将打开一个新的 tmux 窗格,并使用 vim 编辑所选文件。

该代码仅用于演示,可能需要涉及更多保护,例如检查文件类型等。

归功于 Ranger 的帮助手册$(pythonpkginstalldir)/ranger/defaults/rc.conf$(pythonpkginstalldir)/ranger/defaults/keys.py对于 Ranger 1.4)。他们真的很有帮助。

相关内容