如何输入类似的代码行与sublime文本只有一个不同的字符?

时间:2016-08-17 19:02:38

标签: sublimetext2 sublimetext3

我必须编写类似

的代码
apple1 =1
banana1 =10
cat1 =100
dog1 =1000

apple2 =2
banana2 =20
cat2 =200
dog2 =2000
.
.
.
<to be done till>
apple50 =50
banana50 =500
cat50 =5000
dog50 =50000

是否有任何快捷方式可以复制粘贴前4行并继续粘贴运行顺序?

任何级别的捷径都可以部分或全部完成。

由于

3 个答案:

答案 0 :(得分:1)

如前所述,最简单的方法是使用编程语言,但可以在Sublime Text中使用python。

打开ST控制台ctrl+`并粘贴:

view.run_command("insert", {"characters": "\n\n".join("apple{0} ={0}\nbanana{0} ={0}0\ncat{0} ={0}00\ndog{0} ={0}000".format(i) for i in range(1, 51))})

这将插入所请求的内容。

您还可以使用Tools >> New Plugin...编写插件并粘贴:

import sublime
import sublime_plugin


class PasteSequenceCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        view = self.view
        content = sublime.get_clipboard()
        content, sequence_number = content.replace("1", "{0}"), 2
        if content == view.settings().get("ps_content"):
            sequence_number = view.settings().get("ps_sequence_number") + 1

        view.settings().set("ps_content", content)
        view.settings().set("ps_sequence_number", sequence_number)

        view.run_command("insert", {"characters": content.format(sequence_number)})

然后添加键绑定:

{
    "keys": ["ctrl+shift+v"],
    "command": "paste_sequence"
},

然后你可以复制包含1的块,每次使用paste sequence命令时每个1都会增加。

答案 1 :(得分:0)

对我来说,似乎这个任务不适用于文本编辑器。它看起来更像是脚本的任务。例如在bash中,它就像是:

#!/bin/bash
for i in `seq 1 50`;
do
    echo "apple$i .. ${i}=${i}" >> text.txt
    echo "banana$i =${i}0" >> text.txt
    echo "cat$i =${i}00" >> text.txt
    echo "dog$i =${i}000" >> text.txt
done

运行它:

  • 创建文件,说inserter.sh
  • 通过chmod +x inserter.sh
  • 使其可执行
  • 运行./inserter.sh

结果将位于同一文件夹中的text.txt文件中。

答案 2 :(得分:0)

您需要将输出重定向到文件。

#!/bin/bash
cntr=1
banana_cntr=10
cat_cntr=100
dog_cntr=1000

for i in `seq 1 1 50`
do
        echo "apple${cntr}=$[$cntr * 1]"
        echo "banana${cntr}=`expr $cntr \* $banana_cntr`"
        echo "cat${cntr}=`expr $cntr \* $cat_cntr`"
        echo "dog${cntr}=`expr $cntr \* $dog_cntr`"
        cntr="$[cntr + 1]"
        echo " "
done