【问题标题】:vim - How to query the pwd of a terminal buffer?vim - 如何查询终端缓冲区的密码?
【发布时间】:2020-03-13 05:38:17
【问题描述】:

假设我打开了一个终端缓冲区,它被 cd'ed 到 ~/foo/bar 目录,我如何捕获该目录以在其他 vimscripts 中使用?

【问题讨论】:

  • 那没有得到终端缓冲区所在的当前目录。它得到了 Vim 设置的当前目录。它必须是 in 终端缓冲区的目录。
  • 你的意思是像:terminal这样的终端缓冲区吗?嗯,那会很难。见vimhelp.org/terminal.txt.html#terminal-communication
  • 成功了!将其发布为答案

标签: vim terminal


【解决方案1】:

@phd 的回答帮我找到了解决办法

function s:get_closest_terminal()
    " Reference: https://stackoverflow.com/a/27232550/3626104
    let l:buffers = sort(tabpagebuflist('%'), 'n')

    for l:number in reverse(l:buffers)
        let l:type = getbufvar(l:number, '&buftype', '')

        if l:type == "terminal"
            return l:number
        endif
    endfor

    return -1
endfunction


function s:get_current_directory()
    let l:terminal_buffer = s:get_closest_terminal()

    if l:terminal_buffer == -1
        echoerr "No directory could be found"

        return ""
    endif

    " Example: "hostname@localhost: /home/username"
    let l:title = term_gettitle(l:terminal_buffer)

    " Example: "/home/username"
    return substitute(l:title, "^.*: ", "", "")
endfunction

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 2021-09-03
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多