Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 维姆,重新打开上次关上的窗户,那是在分裂中_Vim_Split - Fatal编程技术网

Vim 维姆,重新打开上次关上的窗户,那是在分裂中

Vim 维姆,重新打开上次关上的窗户,那是在分裂中,vim,split,Vim,Split,是否可以重新打开vim中关闭的窗口,即split中的窗口 类似于ctrl+shift+t和浏览器选项卡的功能?问得好!我在想下面的事情: nmap <c-s-t> :vs<bar>:b#<CR> nmap:vs:b# 它应该可以正常工作。无需轮班: nmap:vs:b# 与CTRL一起使用时,vim对字符进行同等处理,大写与否 实际上,在前面的回答中,CTRLn和CTRLSHIFTN应该都能工作。:vs#将垂直拆分当前窗口并打开备用文件。 它非常简单,您

是否可以重新打开vim中关闭的窗口,即split中的窗口


类似于ctrl+shift+t和浏览器选项卡的功能?

问得好!我在想下面的事情:

nmap <c-s-t> :vs<bar>:b#<CR>
nmap:vs:b#
它应该可以正常工作。

无需轮班:

nmap:vs:b#
与CTRL一起使用时,vim对字符进行同等处理,大写与否

实际上,在前面的回答中,CTRLn和CTRLSHIFTN应该都能工作。

:vs#
将垂直拆分当前窗口并打开备用文件。

它非常简单,您不需要将它绑定到密钥。

我已经使用

以下命令,
:rebootlasttab
,将重新拆分最后打开的缓冲区:

command ReopenLastTab execute "vsplit" bufname(g:bufmru_bnrs[1])
我使用
Vundle
安装了bufmru,如下所示,但您当然可以按自己喜欢的方式安装它

#.vimrc

" Install bufmru with Vundle
Plugin 'vim-scripts/bufmru.vim'

let g:bufmru_switchkey = "<c-t>"  " I never use this: the default is Space, but I don't need to use it so set it to something I don't care about.
#.vimrc
“使用Vundle安装bufmru
插件“vim脚本/bufmru.vim”
让g:bufmru_switchkey=“”我从不使用这个:默认值是空格,但我不需要使用它,所以将它设置为我不关心的值。

如果有人需要更通用的东西,我就做了这个函数

只需将它放在你的.vimrc中

" open last closed buffer
function! OpenLastClosed()
    let last_buf = bufname('#')

    if empty(last_buf)
        echo "No recently closed buffer found"
        return
    endif
    let result = input("Open ". last_buf . " in (n)ormal (v)split, (t)ab or (s)plit ? (n/v/t/s) : ")
    if empty(result) || (result !=# 'v' && result !=# 't' && result !=# 's' && result !=# 'n')
        return
    endif
    if result ==# 't'
        execute 'tabnew'
    elseif result ==# 'v'
        execute "vsplit"
    elseif result ==# 's'
        execute "split"
    endif
    execute 'b ' . last_buf
endfunction

nnoremap <C-t> :call OpenLastClosed() <CR>
“打开上次关闭的缓冲区
函数!OpenLastClosed()
设last_buf=bufname(“#”)
如果为空(最后一个)
echo“未找到最近关闭的缓冲区”
返回
恩迪夫
让结果=输入(“打开”。最后一个“打开”。(n)正常(v)拆分,(t)ab或(s)拆分?(n/v/t/s):)
如果为空(result)| |(result!=#'v'和&result!=#'t'和&result!=#'s'和&result!=#'n')
返回
恩迪夫
如果结果=#'t'
执行“tabnew”
elseif result==#“v”
执行“vsplit”
elseif result==#'s'
执行“拆分”
恩迪夫
执行“b”。最后一步
端功能
nnoremap:调用OpenLastClosed()

使用
Ctrl+t
调用它,然后选择要打开该文件的位置。

这不会回答您的问题,但是有一个
:ls
命令列出所有缓冲区,甚至是已关闭的缓冲区。您可以在那里找到缓冲区,并使用
:b 15
在当前窗口中打开缓冲区15。谢谢,我知道这一点,但是如果您能找到它,那将是非常棒的只需按一些组合键,然后重新打开上次关闭的窗口。注意:C-S-t是中的“重新打开上次关闭的选项卡”Chrome@sehe-一次或多个,视情况而定。从技术上讲,这会打开备用缓冲区,它并不总是与上次关闭的缓冲区相同。是的,我知道……但我想不出更好的方法来做这样的事情。我正在考虑它它不容易在我的vim上工作(我得到的
缓冲区4不存在
)。我不知道b#是做什么的,虽然很好!它很有效。现在我只需要第二个namp就可以在sp中打开它。比如nmap:sp:b#。或者也许有一种方法可以选择当前windows布局的最佳分割?@sehe-See。我找不到关于:b#的官方文档链接。顺便说一句,我承认我很惊讶你还没有这样做。阅读你的a回答关于Vim的问题我感觉你对它了如指掌:)哦,这真是太好了。我可能不适合使用
rails.Vim
或类似插件的人,因为Vim中的钩子可以为你提供特定的文件,实际上你甚至不需要
" open last closed buffer
function! OpenLastClosed()
    let last_buf = bufname('#')

    if empty(last_buf)
        echo "No recently closed buffer found"
        return
    endif
    let result = input("Open ". last_buf . " in (n)ormal (v)split, (t)ab or (s)plit ? (n/v/t/s) : ")
    if empty(result) || (result !=# 'v' && result !=# 't' && result !=# 's' && result !=# 'n')
        return
    endif
    if result ==# 't'
        execute 'tabnew'
    elseif result ==# 'v'
        execute "vsplit"
    elseif result ==# 's'
        execute "split"
    endif
    execute 'b ' . last_buf
endfunction

nnoremap <C-t> :call OpenLastClosed() <CR>