নোটপ্যাড ++ এ পরবর্তী মিলটি নির্বাচন করুন (সাবলেট টেক্সটে Ctrl + D এর মতো)


13

আমি ওপেন সোর্স নোটপ্যাড ++ এ নিম্নলিখিত কার্যকারিতাটি ব্যবহার করার জন্য একটি উপায় অনুসন্ধান করছি।

সাব্লাইম টেক্সটে আপনি যদি Ctrl+ D(ম্যাক: cmd+ Dআমার মনে হয়) চাপলে এটি ঘটে:

  • যদি কোনও নির্বাচন না হয় তবে শব্দটি নির্বাচন করতে কার্সারের অবস্থানটি প্রসারিত হবে।
  • অন্যথায় word শব্দের পরবর্তী উপস্থিতিও নির্বাচন করা হয়েছে (অনুসন্ধান-পপআপ খোলার প্রয়োজন ছাড়াই)।

তারপরে আপনি পরিবর্তিত করতে পারবেন এমন শব্দের একটি বহু-নির্বাচন রয়েছে এবং আপনি প্রকৃতপক্ষে এই জায়গাগুলির প্রত্যেকটিই দেখতে পেয়েছেন (নির্বাচিত সকলের বিপরীতে)।

নোটপ্যাড ++ (সম্ভবত অটোহোটির সাহায্যে) এ কাজ করার কোনও উপায় আছে কি?

ঐচ্ছিক: ইন সাবলাইম আপনার কাছে এই প্রতিটি পূর্বাবস্থা করতে পারেন Ctrl+ + D's এর সাথে Ctrl+ + Uএবং সঙ্গে একটি occurance লাফালাফি 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()

যদিও এই স্ক্রিপ্টটি বেশ অদ্ভুত, যদি কারও কোনও মাল্টিসিলেটের প্রয়োজন হয় এবং তিনি সিন্টিলার উত্স কোডটিতে ডুব দিতে চান না তবে এই পথে চলতে হবে।
polkovnikov.ph

1

আপনি F3অনুসন্ধান চালিয়ে যেতে আঘাত করতে পারেন ।


হ্যাঁ, তবে এটি করার আগে আপনার Ctrl + F ব্যবহার করা উচিত। এটিই একমাত্র নেতিবাচক দিক, আমার মনে হয় এটি সবচেয়ে ভাল কাজ।
জ্যাক '

-1

হ্যাঁ নোটপ্যাড ++ এ "নির্বাচন করুন এবং পরবর্তী অনুসন্ধান করুন" বৈশিষ্ট্যটি রয়েছে।

এর মূল সংমিশ্রণটি হ'ল।

Ctrl + + F3

এবং আগের ঘটনাটি নির্বাচন করতে এটি is

Ctrl+ Shift+F3

আপনি অনুসন্ধান মেনুতে এটি পরীক্ষা করে দেখতে পারেন ।


উত্তরের জন্য ধন্যবাদ তবে আমি বিশেষভাবে জিজ্ঞাসা করেছি যে আপনার তখন সেই শব্দগুলির উপর একটি বহু-নির্বাচন রয়েছে (যেন আপনি প্রতিটি অতিরিক্ত বাছাইয়ে সিটিআরএল-ডাবল ক্লিক করেন)। উদাহরণ: আপনার কাছে শব্দটি রয়েছে float, আপনি কী সংমিশ্রণটি টিপুন এখন দ্বিতীয় সংস্থানটি floatবহু নির্বাচনের সাথে যুক্ত করা হয়েছে। তারপরে আপনি doubleদুটি ঘটনা প্রতিস্থাপন করতে টাইপ করতে পারেন (এবং ফাইলটির বাকী অংশটি অপরিবর্তিত রাখুন)
বেন

নোটপ্যাড ++ এ সেরকম কিছু পাওয়া যায় কিনা তা আমি নিশ্চিত নই। তবে আমি আপনাকে জানিয়ে দেব যে আমি এটির সামনে এসে পৌঁছেছি বা এটি করার কোনও উপায় খুঁজে পেয়েছি।
আয়ান

দুর্ভাগ্যক্রমে Ctrl + F3 কেবল একই শব্দগুলি নির্বাচন করে তবে আপনি একই সময়ে সমস্তগুলি সম্পাদনা করতে পারবেন না।
ম্যানুয়েল ডি ইওরিও

@ ম্যানুয়েলডিআইওরিও এর জন্য আপনাকে প্রতিস্থাপন কার্যকারিতাটি ব্যবহার করতে হবে। এটি অনুসন্ধানের অধীনে বা আপনি কেবল Ctrl + H টিপতে পারেন
আয়ান

ভাল আমি নোটপ্যাড ++ এ মাল্টিএডিটিং বৈশিষ্ট্যটি পেয়েছি এবং আমি এটি পছন্দ করি!
ম্যানুয়েল ডি ইওরিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.