我想将可视选择的区域写入文件。例如,

prefix [sample text
more text] suffix


采取,导致一个新文件包含:

sample text
more text


正常的[]命令使用行,因此w将包含前缀/后缀(不允许'<,'>w! /tmp/test)。 />

#1 楼

首先,将您的视觉选择(在vim中也称为“ yank”)复制到您选择的寄存器中。例如,要复制以注册“ z”,请进行视觉选择,然后键入"zy。如果给出的话,可以通过将光标放在首先是方括号,然后键入v%"zy

分解:v->开始视觉选择; %->移至匹配的大括号; "z->使用寄存器'z'; y->拉动(复制)所选内容(在这种情况下,存入寄存器'z')。

复制视觉选择后注册“ z”,请转到命令行,然后键入

call writefile(getreg('z', 1, 1), "some-file")


如果要可以添加文字而不是覆盖文字,您可以按如下方式使用“ a”标志

call writefile(getreg('z', 1, 1), "some-file", "a") 


评论


这意味着没有内置命令可以做到这一点?

–laktak
17年4月6日在11:59



@laktak不是我能找到……split()吗? getreg(..,1,1)返回一个列表,因此不需要split()。

–muru
17年4月6日在11:59

谢谢-您太快了:)我刚刚意识到我的错误,并在您回复时编辑了评论。

–laktak
17年4月6日在12:01

#2 楼

您还可以复制内容并创建一个新窗口

Ctrl-w n ........... create a new window
p .................. paste


然后可以根据需要进行保存

#3 楼



Vim帮助说(:h 10.3):


注意:
使用可视模式选择行的一部分或使用CTRL- V to
选择文本块,冒号命令仍将应用于整行。


Charles Campbell的vis插件(#1195)提供了:B {cmd}命令,仅将{cmd}应用于可视(块)选择。
br />