tmux:如何在光标下打开文件

我是一个vim用户,习惯了gf命令,该命令在光标下打开文件。

现在我想问一下,是否有类似tmux的东西。

我可以通过一个tmux窗格进行导航,并且经常发生光标下有文件路径。 现在我想用vim在光标下打开该文件。

  • 答:在当前窗口中
  • B:在另一个包含并打开vim的窗口中
  • 也许有可能在调用特殊的按键组合时以该导航模式运行sh脚本? 这将使我可以像vimscript一样在vim中编写我自己的脚本。

    我已经在多路复用器.tmux.conf中使用了一些vi复制模式

    # VIM
    # ===================================================================
    
    # Vimlike copy mode.
    unbind [
    bind Escape copy-mode
    unbind p
    bind p paste-buffer
    bind -t vi-copy 'v' begin-selection
    bind -t vi-copy 'y' copy-selection
    
    # Enable vi keys.
    setw -g mode-keys vi
    
    # https://coderwall.com/p/4b0d0a/how-to-copy-and-paste-with-tmux-on-ubuntu
    bind -t vi-copy y copy-pipe "xclip -sel clip -i"
    

    为了实现你想要的,你需要在你的命令行中使用stdin( xargs可以这样做),并在new-window告诉tmux使用复制缓冲区中的参数打开数据:

    bind -t vi-copy y copy-pipe "xargs -I{} tmux new-window 'vim {}'"
    

    这需要更多的调整(获得正确的会话,正确的命令,使用$EDITOR而不是vim等。

    这是相当危险的:认为复制/foo/bar/my;rm -rf /

    此外,这只适用于相对于tmux工作目录的路径。


    所以我用下面的绑定运行它:

    bind -t vi-copy y copy-pipe "xargs -I{} tmux send-keys -t 1 ';edit {}' Enter && tmux select-pane -t 1"
    

    笔记

  • 我改变了vim命令:to;
  • 我在窗格1中打开了一个vim

  • 有一个tmux mod允许在'模式'中绑定任何复杂的动作:http://ershov.github.io/tmux/

    有一个如何使用该补丁标记光标下的单词的例子:

    proc is_word_char {c} {
        print [scan $c %c]
        return [expr {$c > " " && $c != "x7f"}]
    }
    
    proc mark-current-word {} {
        clear-selection
        set l [copy-mode-screenline]
        set x [copy-mode-get-cx]
        if {![is_word_char [string range $l $x $x]]} return
        incr x
        while {[is_word_char [string range $l $x $x]]} {
            cursor-right
            incr x
        }
        incr x -2
        begin-selection
        while {[is_word_char [string range $l $x $x]]} {
            cursor-left
            if {$x < 1} return
            incr x -1
        }
    }
    
    # Open selection in a vim mini-window (no shell and files)
    bind-key -t vi-copy y tcl {
        split-window -c [f #{pane_current_path}] -l 5 "
            echo -n [shell-quote [copy-mode-selection]] | vim -R -"
    }
    

    因此,要在vim中打开当前文件:

    mark-current-word
    split-window -c [f #{pane_current_path}] -l 5 "vim -R [shell-quote [copy-mode-selection]]"
    
    链接地址: http://www.djcxy.com/p/86139.html

    上一篇: tmux: how to open file under cursor

    下一篇: key to kill all or maybe a grouping of windows/panels