नोटपैड ++ में अगले मैच का चयन करें (जैसे सबलेम टेक्स्ट में Ctrl + D)


13

मैं खुले स्रोत नोटपैड ++ में निम्नलिखित कार्यक्षमता का उपयोग करने का एक तरीका खोज रहा हूं।

SublimeText में आप प्रेस यदि Ctrl+ D(मैक: cmd+ Dमुझे लगता है कि) होता है:

  • यदि कोई चयन नहीं है, तो उस शब्द का चयन करने के लिए कर्सर की स्थिति का विस्तार किया जाता है।
  • अन्यथा उस शब्द का अगला रोड़ा भी चुना जाता है (खोज-पॉपअप खोलने की आवश्यकता के बिना)।

तब आपके पास उन शब्दों का एक बहु-चयन होता है जिन्हें आप बदल सकते हैं, और आपने वास्तव में इनमें से प्रत्येक स्थान को देखा है (जैसा कि एक चयन-सभी के विपरीत)।

क्या नोटपैड ++ (शायद ऑटोहोटेक की मदद से) में ऐसा किया जा सकता है?

वैकल्पिक: उदात्त में आप भी इनमें से प्रत्येक पूर्ववत कर सकते हैं Ctrl+ Dके साथ 's Ctrl+ Uऔर के साथ एक घटना को छोड़ Ctrl+ K

जवाबों:


2

मुझे नोटपैड ++ समुदाय पृष्ठ पर यह धागा मिला:

https://notepad-plus-plus.org/community/topic/11360/multi-selection-and-multi-edit

वे निम्न स्क्रिप्ट के साथ इस कार्यक्षमता को बनाने के लिए अजगर स्क्रिप्ट प्लगइन का उपयोग कर रहे हैं :

# this script implements the enhanced multi cursor edit functionality

def default_positions():
    return 0, editor.getLength()

def get_pos_of_bookmarks():
    npp_bookmark_marker_id_number = 24
    npp_bookmark_marker_mask = 1 << npp_bookmark_marker_id_number
    _start_position, _end_position = default_positions()

    line_nbr = editor.markerNext(_start_position, npp_bookmark_marker_mask)
    if line_nbr != -1:
        _start_position = editor.positionFromLine(line_nbr)
        line_nbr = editor.markerNext(line_nbr + 1, npp_bookmark_marker_mask)
        if line_nbr != -1:
            _end_position = editor.getLineEndPosition(line_nbr)
    return _start_position, _end_position

def get_pos_of_visible_lines():
    first_visible_line = editor.getFirstVisibleLine()
    _start_position = editor.positionFromLine(first_visible_line)
    lines_visible = editor.linesOnScreen()
    last_visible_line = editor.docLineFromVisible(first_visible_line+lines_visible)
    _end_position = editor.getLineEndPosition(last_visible_line)
    return _start_position, _end_position

def get_pos_of_selections():
    _start_position, _end_position = default_positions()
    if editor.getSelections() == 2:
        _start_position = editor.getSelectionNStart(0)
        _end_position = editor.getSelectionNEnd(1)
    return _start_position, _end_position


area_dict = {'a':default_positions,
             'b':get_pos_of_bookmarks,
             's':get_pos_of_selections,
             'v':get_pos_of_visible_lines}

editor.beginUndoAction()

def Main():
    _text = editor.getTextRange(editor.getSelectionNStart(0), editor.getSelectionNEnd(0))
    if len(_text) != 0:

        _current_position = editor.getCurrentPos()
        _current_line = editor.lineFromPosition(_current_position)
        _current_word_start_pos = editor.getLineSelStartPosition(_current_line)
        _current_word_end_pos = editor.getLineSelEndPosition(_current_line)

        find_flag = 2 # 0=DEFAULT, 2=WHOLEWORD 4=MATCHCASE 6=WHOLEWORD | MATCHCASE
        mode_options = ' 0=replace,  1=before,  2=afterwards\n'
        area_options = ' a=all, b=bookmarks, s=selected, v=visible'
        expected_results = [x+y for x in ['0','1','2'] for y in ['a','b','s','v']]

        result = notepad.prompt(mode_options + area_options, 'Choose the desired option', '0a')
        while result not in expected_results: 
            if result is None:
                return
            result = notepad.prompt(mode_options + area_options, 'Choose the desired option', '0a')

        chosen_mode, chosen_area = result
        area_start_position, area_end_position = area_dict[chosen_area]()

        if chosen_mode == '0': # replace whole string version
            editor.setEmptySelection(_current_position)       
            position_tuple = editor.findText(find_flag, area_start_position, area_end_position, _text)

            while position_tuple is not None:
                if _current_position not in position_tuple:
                    editor.addSelection(*position_tuple)
                position_tuple = editor.findText(find_flag, position_tuple[1], area_end_position, _text)


        elif chosen_mode == '1': # insert before selected string version
            editor.setEmptySelection(_current_word_start_pos)
            position_tuple = editor.findText(find_flag, area_start_position, area_end_position, _text)

            while position_tuple is not None: 
                startpos, endpos = position_tuple
                if startpos != _current_position and endpos != _current_position:
                    editor.addSelection(startpos, startpos)
                else:
                    _current_word_start_pos, _current_word_end_pos = startpos, startpos
                position_tuple = editor.findText(find_flag, endpos, area_end_position, _text)


        elif chosen_mode == '2': # insert after selected string version
            editor.setEmptySelection(_current_word_end_pos)
            position_tuple = editor.findText(find_flag, area_start_position, area_end_position, _text)

            while position_tuple is not None: 
                startpos, endpos = position_tuple
                if startpos != _current_position and endpos != _current_position:
                    editor.addSelection(endpos, endpos)
                else:
                    _current_word_start_pos, _current_word_end_pos = endpos, endpos
                position_tuple = editor.findText(find_flag, endpos, area_end_position, _text)


        # now add the current selection
        editor.addSelection(_current_word_start_pos, _current_word_end_pos)

Main()
editor.endUndoAction()

भले ही यह स्क्रिप्ट काफी अजीब है, लेकिन यह एक ऐसा तरीका है जब किसी को एक मल्टीसेलेक्ट की आवश्यकता होती है और वह सिंटिला स्रोत कोड में गोता नहीं लगाना चाहता है।
पोलकोवनिकोव।

1

आप F3खोज जारी रखने के लिए बस हिट कर सकते हैं ।


हां, लेकिन ऐसा करने से पहले आपको Ctrl + F का उपयोग करना होगा। यह केवल नकारात्मक पक्ष है, मुझे लगता है कि यह सबसे अच्छा समाधान है।
जैक

-1

हां नोटपैड ++ में "सिलेक्ट एंड फाइंड नेक्स्ट" फीचर मौजूद है।

इसके लिए प्रमुख संयोजन है।

Ctrl + F3

और पिछली घटना का चयन करना है।

Ctrl+ Shift+F3

आप इसे खोज मेनू के तहत देख सकते हैं ।


उत्तर के लिए धन्यवाद, लेकिन मैंने विशेष रूप से पूछा कि आपने तब उन शब्दों पर एक बहु-चयन किया है (जैसे कि आप प्रत्येक अतिरिक्त चयन पर ctrl-doubleclicked)। उदाहरण: आपके पास शब्द है float, आप कुंजी संयोजन को दबाते हैं अब floatबहु चयन को दूसरे चयन में जोड़ा जाता है। तब आप doubleदो घटनाओं को बदलने के लिए टाइप कर सकते हैं (और शेष फाइल को अपरिवर्तित रखें)
ben

मुझे यकीन नहीं है कि नोटपैड ++ में ऐसा कुछ उपलब्ध है। लेकिन मैं आपको बता दूंगा कि क्या मैं इसके पार आता हूं या ऐसा करने का कोई तरीका ढूंढता हूं।
अयान

दुर्भाग्य से Ctrl + F3 केवल एक ही शब्द का चयन करते हैं, लेकिन आप उन सभी को एक ही समय में संपादित नहीं कर सकते।
मैनुअल डि इयोरियो

@ManuelDiIorio इसके लिए आपको प्रतिस्थापित कार्यक्षमता का उपयोग करने की आवश्यकता है। इसकी खोज के तहत या आप Ctrl + H
Ayan

खैर मुझे नोटपैड ++ में मल्टीएडिटिंग फीचर मिला और मुझे यह पसंद आया!
मैनुअल डि इयोरियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.