2016-06-16 82 views
0

在VIM容易阅读文件与读命令当前缓冲区:Vim的:如何从一个缓冲区读取到另一个

:r my.file 

但如果文件路径是很长,和文件是在另一个缓冲区开放,我怎么能在缓冲区的内容读,而不是即

:r {buffer_number} 

是否有从一个缓冲直接到另一个读不使用抽出缓冲的方式?

回答

5

在命令行,你可以使用#n解决链接到缓冲区号n文件:

:ls  " list buffers 
:r #3 " read from file associated with buffer 3 

注意:r文件读取,而不是从一个缓冲区和缓冲区的内容可能与其相关文件的内容不同。

如果你想访问缓冲区的内容,你不能真正避免脚本(如Luc Hermitte的回答)。

+0

的确。我的回答很复杂。我学到了一些新东西。谢谢 :) –

2

您可以直接使用getline(1,'$')readfile(bufname(buffnumber))存储缓冲区的内容。但我想后者不能用在你的上下文中,否则你会直接使用:r

所以,你需要

  • 首先要记住您的所在。 - >getwinid(),或bufnr('%')
  • 然后,去一个窗口,用正确的缓冲,或仅仅是改变当前缓冲区
  • 阅读,你是它的内容
  • 回报(即恢复初始缓冲)
  • 最后贴上您已经阅读

这可能是类似的东西:

" untested 
function s:ReadBuffer(b) abort 
    " + add test to be sure the buffer exists 
    let b0 = bufnr('%') 
    exe 'b ' . a:b 
    let lines = getline(1, '$') 
    exe 'b ' . b0 
    $put=lines 
endfunction 

command! -nargs=1 -complete=buffer ReadBuffer call s:ReadBuffer(<f-args>) 
+0

@yolenoyer确实。谢谢。 –

+0

虽然我接受了其他答案,但是我想感谢您对问题的严格解剖 – murungu

相关问题