有没有办法执行txt文件中的vim命令以及文本?

有没有办法执行txt文件中的vim命令以及文本?,vim,ctf,Vim,Ctf,我正处于CTF的最后阶段,我有以下几点: vim flag iCourse{v3ry_g00d_fl4g}[ESC]13hs1[ESC]am_[ESC]9l2xli_[ESC]2li3[ESC]vypaks[ESC]:s/ry/15 :wq 我对Vim不太熟悉,所以我无法确定如何运行这个脚本。我猜它一定做了比用“15”替换“ry”更大的事情,因为我手动尝试了,但标志不正确。提前谢谢 是的,这是可能的。当使用-s命令行标志启动时,vim将从输入文件获取命令: 从手册页: 因此,您只需使用sed

我正处于CTF的最后阶段,我有以下几点:

vim flag
iCourse{v3ry_g00d_fl4g}[ESC]13hs1[ESC]am_[ESC]9l2xli_[ESC]2li3[ESC]vypaks[ESC]:s/ry/15
:wq 

我对Vim不太熟悉,所以我无法确定如何运行这个脚本。我猜它一定做了比用“15”替换“ry”更大的事情,因为我手动尝试了,但标志不正确。提前谢谢

是的,这是可能的。当使用
-s
命令行标志启动时,
vim
将从输入文件获取命令:

从手册页:

因此,您只需使用
sed
等工具将
[ESC]
的每次出现转换为转义字符,将结果存储在临时文件中,然后将其馈送到
vim

s='iCourse{v3ry_g00d_fl4g}[ESC]13hs1[ESC]am_[ESC]9l2xli[ESC]2li3[ESC]vypaks[ESC]:s/ry/15'
cmdfile=`mktemp`

echo-e`sed's/\[ESC\]/\\\x1B/g'您必须键入与此完全相同的所有内容,除了
[ESC]
意味着按escape键。FWIW,这产生了一行
Course{v3m_15_g00d_4_g33ks}
@L3viathan它是不正确的:(我很好奇你是怎么得到的?@L3viathan Course{v1m_15_g00d_4_g33ks}是正确的,但我只是假设它更有意义:)不用麻烦,但你介意告诉我为了得到它到底需要做什么吗?我试图键入“iCourse{v3ry_g00d_fl4g}13hs1am_9l2xli_2li3vypaks”,然后执行:s/ry/15,但其效果与我上面描述的相同;(启动vim后,我键入
iCourse{v3ry_g00d_fl4g}
,然后按escape切换回正常模式,然后键入
13hs1
,再次按escape,依此类推。哦,我知道为什么对我来说是
v3m
:因为我已经为
vim环绕
:)重新映射了
s
)@L3viathan,非常感谢!)
-s {scriptin}
      The  script  file {scriptin} is read. The characters in the
      file are interpreted as if you had typed them. The same can
      be done with the command ":source! {scriptin}". If the end
      of the file is reached before the editor exits, further
      characters are read from the keyboard.