2016-08-17 1 views
2

私はどのようにして、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行を貼り付けシーケンスを実行して貼り付けを保つコピーする任意のショートカットはありますか?

これを部分的または完全に行うには、どのようなレベルのショートカットを使用しても問題ありません。

おかげ

+1

プログラムの変数を定義しようとしていますか?そうであれば、あなたはデータ構造のない古代言語を使っているのですか、それともあなたはすべて間違っているのでしょうか?このため、配列、リスト、辞書などが発明されました。 – MattDMo

答えて

1

既に言及したように、最も簡単な方法はプログラミング言語を使用することですが、崇高なテキストでは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がたびにあなたを増加しますpaste sequenceコマンドを使用します。

+0

完全に動作します。この方法でフィールドIDを持つiMacroスクリプトを作成しようとしていました。私の仕事を簡素化します。どうもありがとう !! –

0

は、私にとっては、このタスクは、テキストエディタのためではないようです。それはスクリプトのタスクのように見えます。

#!/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 

それを実行するには:例えばbashで、それは次のようになります

  • inserter.sh
  • はそれ./inserter.sh
chmod +x inserter.sh
  • 実行することによってそれを実行可能にすると言う、ファイルを作成します

    結果はtext.txtになります同じフォルダ内のファイルです。

  • 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 
    
    関連する問題