vim-如何查询终端缓冲区的pwd?

vim-如何查询终端缓冲区的pwd?,vim,terminal,Vim,Terminal,假设我打开了一个终端缓冲区,该缓冲区被cd'ed到~/foo/bar目录,我如何捕获该目录以用于其他Vimscript?@phd的回答帮助我找到了一个解决方案 function s:get_closest_terminal() " Reference: https://stackoverflow.com/a/27232550/3626104 let l:buffers = sort(tabpagebuflist('%'), 'n') for l:number in re

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

@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

无法获取终端缓冲区所在的当前目录。它获取Vim设置的当前目录。它必须是终端缓冲区中的目录。您是指像
:terminal
中那样的终端缓冲区吗?嗯,那很难。看到了吧!把它贴出来作为答复