рдкрд╛рдпрдерди рдореЗрдВ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдкрд░рд┐рдЪрдп


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдиреЛрдЯрдкреИрдб ++ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХ рд╡рд┐рдВрдбреЛрдЬ рдиреЛрдЯрдкреИрдб рдХреЗ рд▓рд┐рдП "рдЙрдиреНрдирдд" рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдиреЛрдЯрдкреИрдб ++ рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдХрд┐рд╕реА рднреА рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде, рдХреБрдЫ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рддрд░реНрдХ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдХреНрд░реЛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдЯрдкреИрдб ++ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдб, рдЗрд╕рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ рдЬреЛ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд▓реБрдЖ, рдкреАрдПрдЪрдкреА рдпрд╛ рдкрд╛рдпрдердиред рдпрд╣ рдмрд╛рдж рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп (рдЬреАрд╡рди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

1. рдкрд╛рда рдХреЗ рдЪрдпрдирд┐рдд рдЯреБрдХрдбрд╝реЗ рдореЗрдВ (рдпрджрд┐ рдХреБрдЫ рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ):
2. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдХрд┐рд╕ рдирдВрдмрд░ рд╕реЗ рдЕрдХреНрд╖рд░ '@' рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ ("рдПрдВрдЯрд░" рджрдмрд╛рдХрд░), рдирдВрдмрд░рд┐рдВрдЧ 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреНрд╡реЗрд░реА рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рдирдВрдмрд░ рджрд░реНрдЬ рд╣реЛрдиреЗ рддрдХ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

3. рдпрджрд┐ рдкрд╛рда рдХреЗ рдЪрдпрдирд┐рдд рдЯреБрдХрдбрд╝реЗ (рдпрд╛ рд╕рдВрдкреВрд░реНрдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рдЪрдпрди рдирд╣реАрдВ рд╣реИ) рдореЗрдВ '@' рдкреНрд░рддреАрдХ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

4. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

рдирд┐рд░реНрдгрдп


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкрд╛рдпрдереЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╛рдордХ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрд╛рда, рдЦреБрд▓реА / рдмрдВрдж рдлрд╛рдЗрд▓реЗрдВ, рд╕реНрд╡рд┐рдЪ рдЯреИрдм, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдиреЛрдЯрдкреИрдб ++ рдореЗрдиреВ рдХрдорд╛рдВрдб рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред - рдПрдХ рд╢рдмреНрдж рдореЗрдВ, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдиреЛрдЯрдкреИрдб ++ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдиреЛрдЯрдкреИрдб ++ рдкреНрд▓рдЧрдЗрдиреНрд╕-> рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ-> рдореЗрдиреВ рд╕реЗ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:

# -*- coding: utf-8 -*- #  Notepad++,       "@",     #    text = editor.getSelText() isSelection = True #    ,      if not text: isSelection = False text = editor.getText() #    "@",     import re occurrencesCount = len(re.findall('^@', text, flags=re.MULTILINE)) #        "@"   ,     if occurrencesCount == 0: notepad.messageBox('      1  "@"   ', '   ', MESSAGEBOXFLAGS.ICONEXCLAMATION) #   "@" ,  else: countStartFrom = '' #     ,      while not countStartFrom.isdigit(): countStartFrom = notepad.prompt(' ,          "@":', '   "@"', '1') if countStartFrom == None: break if countStartFrom != None: #    text = re.sub('\r\n\\s*\r\n', '\r\n', text) #         / text = re.sub('\r\n\s*$|^\s*\r\n', '', text, flags=re.MULTILINE) #  countStartFrom      countStartFrom = int(countStartFrom) # ,   "@"        def addNumber(matchobj): global countStartFrom countStartFrom += 1 return '@'+str(countStartFrom-1) #     "@",     text = re.sub('^@', addNumber, text, flags=re.MULTILINE) #       if isSelection: editor.replaceSel(text) else: editor.setText(text) 

рдЕрдЧрд░ рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдЧрдгрдирд╛" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдореЗрдиреВ рдкреНрд▓рдЧрдЗрдиреНрд╕-> рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ-> рд▓рд┐рдкрд┐рдпреЛрдВ-> рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рдЧрдгрдирд╛ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдЗрд╕рдХреЗ рдмрдЯрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ ( рдкреНрд▓рдЧрдЗрдиреНрд╕-> рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ-> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди ) рдореЗрдВ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореЗрдиреВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЕрдм, рдиреЛрдЯрдкреИрдб ++ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рдЯреВрд▓рдмрд╛рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдЖрдк рдкреНрд▓рдЧрдЗрди рдХрдорд╛рдВрдб рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕-> рд╢реЙрд░реНрдЯрдХрдЯ рдореЗрдкрд░ рдореЗрдиреВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреЛрдЯрдкреИрдб ++ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ ( рд╕реЗрдЯрд┐рдВрдЧреНрд╕-> рдкреЙрдкрдЕрдк рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯрдореЗрди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ) рдХреЗ рд▓рд┐рдП xml- рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реЗ рдкрд╣рд▓реЗ):

 <Item PluginEntryName="Python Script" PluginCommandItemName="Empty Lines And Count" ItemNameAs="      '@'"/> <Item id="0"/> 



рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рдПрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рднреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:

Source: https://habr.com/ru/post/In135822/


All Articles