这里我们有一些令人惊叹的工具: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)
通过上述设置,当您按ef
Ranger 的浏览器时,它将打开一个新的 tmux 窗格,并使用 vim 编辑所选文件。
该代码仅用于演示,可能需要涉及更多保护,例如检查文件类型等。
归功于 Ranger 的帮助手册$(pythonpkginstalldir)/ranger/defaults/rc.conf
($(pythonpkginstalldir)/ranger/defaults/keys.py
对于 Ranger 1.4)。他们真的很有帮助。