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

417*_*754 6 linux vim tmux nano

在这里,我们有一些很棒的工具:tmux、ranger、vim……配置 ranger 以在 tmux 新窗格中打开文件(当文本可编辑时)会很棒吗?这很容易吗?它是如何完成的?

ali*_*ick 9

我做了一些研究,发现它并不太难。

要以特殊方式在新窗格(右侧)中打开 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 + "'")
Run Code Online (Sandbox Code Playgroud)

使用 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)
Run Code Online (Sandbox Code Playgroud)

使用上述设置,当您ef在 Ranger 的浏览器中按下时,它将打开一个新的 tmux 窗格,其中 vim 编辑所选文件。

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

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

  • 我只是发现 tmux 会在其会话中设置环境变量 `$TMUX`,因此检查它应该就足够了。试试这个:`map ef eval if os.environ.has_key('TMUX'): fm.execute_console("shell tmux splitw -h 'vim " + fm.thisfile.basename + "'")` (2认同)