在VIM容易阅读文件与读命令当前缓冲区:Vim的:如何从一个缓冲区读取到另一个
:r my.file
但如果文件路径是很长,和文件是在另一个缓冲区开放,我怎么能在缓冲区的内容读,而不是即
:r {buffer_number}
是否有从一个缓冲直接到另一个读不使用抽出缓冲的方式?
在VIM容易阅读文件与读命令当前缓冲区:Vim的:如何从一个缓冲区读取到另一个
:r my.file
但如果文件路径是很长,和文件是在另一个缓冲区开放,我怎么能在缓冲区的内容读,而不是即
:r {buffer_number}
是否有从一个缓冲直接到另一个读不使用抽出缓冲的方式?
在命令行,你可以使用#n
解决链接到缓冲区号n
文件:
:ls " list buffers
:r #3 " read from file associated with buffer 3
注意:r
从文件读取,而不是从一个缓冲区和缓冲区的内容可能与其相关文件的内容不同。
如果你想访问缓冲区的内容,你不能真正避免脚本(如Luc Hermitte的回答)。
您可以直接使用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>)
@yolenoyer确实。谢谢。 –
虽然我接受了其他答案,但是我想感谢您对问题的严格解剖 – murungu
的确。我的回答很复杂。我学到了一些新东西。谢谢 :) –