我怎样才能用 sublime 文本输入类似的代码行,只有一个字符不同?
How can I enter similar lines of code with sublime text with just one char different?
我必须编写类似于
的代码
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 行并继续粘贴 运行 序列?
任何级别的捷径都可以部分或全部完成此操作。
谢谢
对我来说,这个任务似乎不适合文本编辑器。它看起来更像是脚本的任务。例如在 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
文件中。
您需要将输出重定向到一个文件。
#!/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
如前所述,最简单的方法是使用编程语言,但您可以在 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的块,每次使用粘贴序列命令时每个1都会增加。
我必须编写类似于
的代码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 行并继续粘贴 运行 序列?
任何级别的捷径都可以部分或全部完成此操作。
谢谢
对我来说,这个任务似乎不适合文本编辑器。它看起来更像是脚本的任务。例如在 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
文件中。
您需要将输出重定向到一个文件。
#!/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
如前所述,最简单的方法是使用编程语言,但您可以在 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的块,每次使用粘贴序列命令时每个1都会增加。