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에 따라 다르며(다른 셸인 경우 [[부분을 조정해야 함) 두 번째 방법은 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의 경우)에 대한 크레딧입니다. 정말 도움이 됩니다.

관련 정보