我有这个问题我调整了代码我已经制作了这样的结构:
Apple1 = Fruit("ss","ss",[0.1,0.4],'w')
PineApple = Fruit("ss","ss",[0.315,0.4],'w')
Banana = Fruit("ss","ss",[0.315,0.280],'w')
...
...
而不是"ss"
我想输入更多信息,例如"Golden Delicious"
。目前我只是删除"ss"
点击它,然后将其替换为我要插入的信息。我确信有一种更快的方法可以做到这一点,我已经尝试过使用VIM宏,但我无法弄清楚如何" Raw输入"我的数据。
我只是试着用Spyder代替它,但是很慢,因为我每次都必须点击替换,因为我尝试的VIM是相同的。
然后我想知道在'w'
之后如何插入其他东西......
这是最终输出的一个例子,只是为了更好地理解这个问题:
Apple1 = Fruit("Golden Delicous","red",[0.1,0.4],'w')
PineApple = Fruit("Ananas comosus","green",[0.315,0.4],'w')
Banana = Fruit(" Cavendish banana","yellow",[0.315,0.280],'w')
...
...
我重新提出了一个问题:改变"ss"
的速度更快,目前我点击了" ss
"延迟" ss"并写下例如" Golden Delicous"但是很慢。我想要的是每一个 ss
编辑要求我插入一些内容来替换单ss
。
e.g。在第一行中的第一个ss
:我想替换它输入其他内容,例如" Golden Delicous"第一行中的第二个ss
我要替换它,输入somethingelse,例如red
。第二行中的第一个ss
我想用s.e替换它。例如第二行Ananas comosus
秒ss
我要用s.e替换。例如green
等等。
我确定在某个地方有一个答案,但我无法找到它! 请你投票给我解释为什么我可以改进它!
答案 0 :(得分:3)
据我了解,您想要替换“ss”的数据没有常规结构,因此您需要手动输入。
在Vim你会这样做:
答案 1 :(得分:3)
我会这样做:
:%s/ss/\=input('Replacement: ')/gc
这会查询您每次出现的情况。使用/c
标志,显示甚至在循环期间更新(代价是每次出现时必须另外回答y
);没有国旗,你需要跟踪你自己的位置。
答案 2 :(得分:1)
您可以使用一个搜索整个文件的函数,用所有"ss"
个字符串替换填充了替换数据的数组中的值:
function! ChangeSS()
let ss1 = ['Golden Delicous', 'Ananas comosus', 'Cavendish banana']
let ss2 = ['red', 'green', 'yellow']
call cursor(1, 1)
let l = "ss2"
while search('"ss"', 'W') > 0
if l == "ss1"
let l = "ss2"
else
let l = "ss1"
endif
execute 'normal ci"' . remove({l}, 0)
endwhile
endfunction
它使用一个引用变量(l
)来交换要从中提取数据的数组。 ss1
首先出现在"ss"
行,ss2
出现在第二行。{/ p>
像以下一样运行:
:call ChangeSS()
那(在我的测试中)产生:
Apple1 = Fruit("Golden Delicous","red",[0.1,0.4],'w')
PineApple = Fruit("Ananas comosus","green",[0.315,0.4],'w')
Banana = Fruit("Cavendish banana","yellow",[0.315,0.280],'w')