tmux:如何在光标下打开文件
我是一个vim用户,习惯了gf
命令,该命令在光标下打开文件。
现在我想问一下,是否有类似tmux的东西。
我可以通过一个tmux窗格进行导航,并且经常发生光标下有文件路径。 现在我想用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"
笔记
有一个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