여기에는 몇 가지 놀라운 도구가 있습니다: 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.py
Ranger 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.py
Ranger 1.4의 경우)에 대한 크레딧입니다. 정말 도움이 됩니다.