有没有办法在将文件内容插入另一个文件之前插入文件名
我知道如何将一个文件插入另一个文件——:r
但是如何插入我们之前插入的文件名
谢谢
如果您在寄存器中有文件名(例如系统剪贴板),您可以使用<C-r>+
. 这也适用于 Vim 变量:<C-r>=g:filename<CR>
.
但通常,您只需输入:r filename
; 然后,避免再次键入的唯一快捷方式是文件名完成 ( :help i_CTRL-X_CTRL-F
):在插入模式下,键入文件名的开头,然后尝试完成:filen<C-x><C-f>
.
如果以相反的顺序执行,则可以避免键入:由于:read
命令设置了备用文件,您可以通过特殊寄存器插入它#
:
:read filename
'[OI just added <C-r>#
您可以编写一个小函数在读取内容之前插入文件名:
fun! ReadwithFn(fname)
let fn = expand(a:fname)
if !filereadable(fn)
echohl Error
echom fn." cannot be read!"
echohl NONE
else
execute "put ='".fn."'"
execute 'read '.fn
endif
endf
添加定义您自己的命令:
command! -nargs=1 R call ReadwithFn(<q-args>)
如果您获取上述代码,则可以键入
:R fileToRead
该函数将首先插入文件的路径,然后是内容。如果文件不可读(例如不存在),则会出现错误消息。
这只是基本脚本,您可以稍微调整一下。