ক্লিপবোর্ডে ডেটা অনুলিপি করার সময় নেতৃস্থানীয় ট্যাবগুলি এবং / অথবা নেতৃস্থানীয় স্পেসগুলি কীভাবে ফালা করবেন?


13

নোটপ্যাড ++ থেকে ক্লিপবোর্ডে অনুলিপি করা ডেটা থেকে নেতৃস্থানীয় ইনডেন্টস (ট্যাব এবং স্পেসস) সরিয়ে ফেলার জন্য আমার একটি উপায় দরকার।

নোটপ্যাড ++ নথির ডেটাতে নিজেই এই শীর্ষস্থানীয় ইনডেন্টগুলি রাখা উচিত এবং ক্লিপবোর্ডে অনুলিপি করা ডেটাটি থাকা উচিত নয়।

এই আচরণটি কেবল সিটিআরএল + সি দ্বারা শুরু করা উচিত এবং কেবল যখন আমি নোটপ্যাড ++ এর ভিতরে থাকি।


নোটপ্যাড ++ এ এমনটি ঘটে যখন আমি মাউসের সাহায্যে পাঠ্যটি নিয়মিত চিহ্নিত করি:

এখানে চিত্র বর্ণনা লিখুন

আমি নিয়মিত পাঠ্যটি চিহ্নিত করি এবং এটি অনুলিপি করার পরে ক্লিপবোর্ডে থাকা উচিত:

এখানে চিত্র বর্ণনা লিখুন


মন্তব্য:

  1. চিত্রগুলি আমার প্রয়োজনটি আরও ভালভাবে চিত্রিত করার জন্য - আমার আসল কোডগুলি দীর্ঘ।
  2. আমি এই সম্পর্কে এখানে জিজ্ঞাসাও করেছি ।
  3. আমি এটি জিজ্ঞাসা করছি কারণ লিনাক্স টার্মিনালে আমি ইনডেন্ট কোড ব্লকগুলি পেস্ট করতে পারছি না যদি এই catকোডব্লকগুলিতে বংশানুক্রমিক অন্তর্ভুক্ত থাকে (উত্তরাধিকারসূত্রে ডেলিমেটারগুলির প্রক্রিয়াকরণ, একটি দীর্ঘ গল্পের সাথে সম্পর্কিত)।

আপনি কয়টি লাইন এবং অক্ষর অনুলিপি করছেন? শীর্ষস্থানীয় স্থানগুলি অনুলিপি করা, অনুলিপি করা এবং তারপরে পরিবর্তনগুলি পূর্বাবস্থায়িত করা কি সম্ভব হবে?
FCTW

ফাইল বা এর কিছু লাইনগুলির কোনও অগ্রণী ট্যাব না থাকলে কী হবে? কেন আপনি সবসময় এটি করতে চান?
ফুকলিভ

1
আপনার এটার দরকার কেন? নেতৃস্থানীয় হোয়াইটস্পেসকে বিরক্তিকর করে তোলে কী?
mrjink

শেলের মধ্যে? সমস্যা হওয়া উচিত নয়। যদি এটি ভিমে থাকে তবে বিবেচনা করুন :set paste
mrjink

শিমের মধ্যে, ভিমে নয়। এটি একটি সমস্যা কারণ যখন আপনি catহেরেডোকস দিয়ে কোডগুলি পেস্ট করেন - তা হয়
জনডোয়ায়

উত্তর:


7

নিম্নলিখিত অটোহটকি ( এএইচকে ) স্ক্রিপ্টটি বিবেচনা করুন । দেখুন AutoHotkey টিউটোরিয়ালটি AutoHotkey স্ক্রিপ্ট সম্পর্কে আরও ব্যাখ্যা জন্য এবং ডকুমেন্টেশন।

অটোহটকি ইনস্টল করার পরে, Ctrl+ Shift+ টিপুন cবা xনোটপ্যাডের মধ্যে ++ টি ছাঁটা লাইনগুলি সহ ক্লিপবোর্ডে অনুলিপি করুন (বা কাটা)।

দ্রষ্টব্য: আমি Ctrl+ ব্যবহার করেছি Shiftযাতে আপনি এখনও মূল অনুলিপিটি ব্যবহার করতে পারেন এবং কেবলমাত্র দিয়ে সাধারণভাবে কাটতে পারেন Ctrl। আপনি এই আচরণ পছন্দ না হয়, শুধু অপসারণ +উভয় +^c::এবং +^v::

;একটি ব্যাখ্যার জন্য মন্তব্যগুলি (শুরু দিয়ে ) দেখুন । যে কোনও কোডিংয়ের মতো, পরে আপনি যখন এটিতে ফিরে আসবেন তখন স্ক্রিপ্টটি আরও ভালভাবে বোঝার জন্য মন্তব্যে আরও ভাল রাখুন।

SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.

TrimClipboard()
{
    ; Split each line of the clipboard into an array. 
    ; Note: Ignoring Cr (`r) prevents duplicate rows
    linesArray := StrSplit(clipboard, "`n", "`r")

    newClip := "" ; Initialize output string

    for index, element in linesArray
    {   
        ; For each line: trim it, append it and CrLf to output string
        newClip .= trim(element) . "`r`n" 
    }
    ; Note: There is always an extra newline at this point, regardless 
    ; of if the clipboard ended in a newline.

    ; Assign value back to clipboard, without the trailing CrLf
    clipboard := SubStr(newClip, 1, -2)
}

#IfWinActive ahk_class Notepad++
; On Shift+Ctrl+C, perform copy, wait for new content, and trim clipboard
+^c::
    ; Note: ^{sc02e} is the scancode for c which works regardless of keyboard layout
    Send, ^{sc02e}
    Clipwait
    TrimClipboard()
return

;On Shift+Ctrl+X, perform copy, wait for new content, and trim clipboard
+^x::
    ; Note: ^{sc02d} is the scancode for x which works regardless of keyboard layout
    Send, ^{sc02d}
    Clipwait
    TrimClipboard()
return

; sc02e && sc02d are keyboard scan codes for the keys c and x respectively.
; The scancodes work regardless of the keyboard layout set in Windows

#IfWinActive

মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
যাত্রামন গীক

স্টিভেন আমি আরও 50 পয়েন্ট অনুদান দেব তবে কিছু কারণে আমি পারছি না। আমি লক্ষ্য করেছি যে হিব্রুতে কাজ করার সময় অনুলিপি করা আসলে সামগ্রীটি মুছে দেয় এবং তারপরে ctrl+zমুছে ফেলা সামগ্রীটি পুনরুদ্ধার করতে আমাকে করতে হবে । এটি কিছুটা সমস্যাযুক্ত। আমি বুঝতে পারি নীচের কোডটির মতো কিছু ব্যবহার করা যেতে পারে? if !LangID := EN { return }। স্ক্রিপ্টের শুরুতে এটি যুক্ত করা ত্রুটি নিয়ে এসেছিল এবং স্ক্রিপ্টটিকে অনুরূপ সংস্করণ সহ একটি মোড়ক else { return }বন্ধ করার পরে ত্রুটি ঘটেনি তবে কার্যকর হয়নি।
জনডোয়ায়

1
আপনি TrimClipboard(){ ... }কোনও ifবিবৃতিতে কোনও ফাংশন সংজ্ঞা রাখতে পারবেন না । ifফাংশনটির ভিতরে বা কমান্ডের চারপাশে বিবৃতিটি রাখুনSend, ... TrimClipboard()
স্টিভেন

হাই স্টিভেন হাই। আমার প্রচেষ্টায়, এটি কার্যকর হয়নি। এটি কি ভাষায় বাগ আছে? : আমি এখানে দৈর্ঘ্য বিস্তারিত autohotkey.com/boards/...
JohnDoea

: আমি শুধুমাত্র একই আলোচনায় একটি সমাধান প্রকাশিত autohotkey.com/boards/...
JohnDoea

3

কলামটি অনুলিপি করতে কেবল ব্যবহার করুন Alt + Mouse dragging বা Alt + Shift + Arrow keysনির্বাচন করুন selectCtrl+C

এই উদাহরণটি দেখুন: https://notepad-plus-plus.org/fr/features/column-mode-editing.html

সম্পাদনা:

আমরা পুরো কলামটি বা তারপরে আরও একটি কলামও নির্বাচন করতে পারি, এছাড়াও আমরা এক বা একাধিক সারি নির্বাচন করতে পারি।

এটি করার সহজ উপায় এখানে:

  • পছন্দসই নির্বাচনের শুরুতে বাম মাউস ক্লিক করুন।

  • যেখানে পছন্দসই নির্বাচনটি থামাতে হবে সেখানে যান to

  • কার্সারটিকে দ্বিতীয় এবং চূড়ান্ত স্থানে নিয়ে যান:

    • পছন্দসই কলামগুলি এবং সারিগুলি নির্বাচন করতে একসাথে ALT+ SHIFTকীগুলিতে এবং হিট left click

এই সাহায্য আশা করি


1
আমি আমার পূর্ববর্তী প্রতিক্রিয়ার সাথে আরও কিছু বিবরণ যুক্ত করছি, আশা করি এই সহায়তার আশা করি।
ইয়াছাইন

1
এটি কেবল তখনই কাজ করে যদি সমস্ত লাইনের একই নেতৃস্থানীয় ট্যাব বা স্পেস থাকে
ফুক্লভিভ

1
আসলে, হ্যাঁ, এবং প্রশ্নটি ছিল যে রেখাগুলির একই বিন্যাস রয়েছে
ইয়াছাইন

1

জাভা ব্যবহার করে এখানে পোর্টেবল-ইশ সমাধান রয়েছে

প্রথম পদক্ষেপটি অবশ্যই জাভা ইনস্টল করা

এরপরে, Trimmer.javaআপনার ব্যবহারকারী ডিরেক্টরিতে অন্তর্ভুক্ত একটি ফাইলে নিম্নলিখিতটি আটকে দিন (সি: \ ব্যবহারকারী \ আপনার_নাম)

import java.awt.*;
import java.awt.datatransfer.*;

public class Trimmer{
    public static void main(String... lines) throws Exception{
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        String str = (String)clip.getContents(null).getTransferData(DataFlavor.stringFlavor);
        lines = str.split("\n");
        str = "";
        for(String line: lines) str += line.trim() + '\n';
        StringSelection selection = new StringSelection(str.substring(0,str.length()-1));
        clip.setContents(selection,selection);
    }
}

তারপরে, কমান্ড প্রম্পটটি খুলুন এবং টাইপ করুন

javac Trimmer.java

আপনার এখন একই ফোল্ডারে একটি ট্রিমার.class ফাইল থাকা উচিত। আপনি এখন Trimmer.java ফাইলটি মুছতে পারেন।


এই মুহুর্তে, আমাদের একটি প্রোগ্রাম রয়েছে যা ক্লিপবোর্ডের প্রতিটি লাইন থেকে সমস্ত নেতৃস্থানীয় এবং অনুসরণযোগ্য সাদা স্পেস সরিয়ে ফেলবে, তবে এটি এখনও আমাদের সুবিধামতভাবে চালানোর জন্য একটি উপায় প্রয়োজন। এর জন্য একটি হটকি তৈরি করা যাক!

প্রথমে কমান্ড প্রম্পটে একটি শর্টকাট তৈরি করুন (সি: \ উইন্ডোজ \ সিস্টেম 32 \ সেমিডি.এক্সে ডান ক্লিক করুন)

তারপরে, এই শর্টকাটটিতে ডান ক্লিক করুন এবং "সম্পত্তি" নির্বাচন করুন। এই উইন্ডোতে আমাদের কয়েকটি জিনিস করতে হবে। "শর্টকাট" ট্যাবে একটি "টার্গেট" বিকল্প থাকা উচিত যা এর মতো কিছু বলে

%windir%\system32\cmd.exe

বলার জন্য এটি পরিবর্তন করুন

%windir%\system32\cmd.exe /C "java Trimmer"

এটি কমান্ড প্রম্পটকে কেবল আমাদের প্রোগ্রামটি চালিত করতে এবং যখন আমরা এই শর্টকাটটি ব্যবহার করি তখন প্রস্থান করতে পারে।

এর পরে, "শর্টকাট কী" বাক্সে ক্লিক করুন এবং হটকিটি টিপুন যা আপনি পাঠ্য প্রতিস্থাপনটি ট্রিগার করতে চান। আমি ব্যবহারের স্বাচ্ছন্দ্যের জন্য Ctrl+ Shift+ সুপারিশ করছি C!

পরিশেষে, "রান" বিকল্পটি "মিনিমাইজড" এ পরিবর্তন করুন কারণ আমরা যখনই শর্টকাটটি ব্যবহার করি তখনই পর্দায় উইন্ডো ঝলকানো চাই না।


এত কিছুর পরেও, আপনি নিম্নলিখিত কর্মপ্রবাহটি ব্যবহার করতে সক্ষম হবেন:

  1. ব্যবহার করে টেক্সট অনুলিপি করুন CtrlC
  2. ট্রিম টেক্সট ব্যবহার করে Ctrl+ + Shift+ +C
  3. ছাঁটাই করা পাঠ্যটি ব্যবহার করে আটকান CtrlV

হাই রায়ান আমি এককভাবে সিটিআরএল + সি দিয়ে সবকিছু করার একটি উপায় খুঁজছি, যতক্ষণ না আমি নোটপ্যাড ++ এ আছি ... ততক্ষণ, উইন্ডোজ বুট করার সময় এই স্ক্রিপ্টটি শুরু করার কোনও উপায় আছে কি?
জনডোয়ায়

0

সম্ভবত আমি কিছু মিস করছি তবে অন্য সমস্ত উত্তরগুলি সমাধানটিকে আরও জটিল করে দেবে বলে মনে হচ্ছে। যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি যা করতে চান তা হ'ল নেতৃস্থানীয় সাদা স্পেস (স্পেস বা ট্যাব) সরিয়ে ফেলা এবং আপনার নোটপ্যাড ++ এ থাকা ডেটা রয়েছে

সেক্ষেত্রে সমাধানটি সহজ। আপনার ফাইলটি খুলুনNotepad++ >> Search >> Replace... or Ctrl+H

কি সন্ধান করুন :^( *)[ ]|^\t*

এর সাথে প্রতিস্থাপন করুন : খালি ছেড়ে দিন

সব নেতৃস্থানীয় স্থান আমরা ব্যবহার জন্য ^( *)[ ]এবং সমস্ত নেতৃস্থানীয় ট্যাব খোঁজার, আমরা ব্যবহার ^\t*যেমন, সমস্ত নেতৃস্থানীয় স্থান বা সমস্ত নেতৃস্থানীয় ট্যাব আমরা বা অপারেটর ব্যবহার এটি |। প্রতিস্থাপন উইন্ডোতে নিয়মিত এক্সপ্রেশন নির্বাচন করা হয়েছে তা নিশ্চিত করুন ।

এটি কোনও বৃহত ফাইল হলেও এটি দ্রুত শেষ করা উচিত। প্রতিস্থাপন উইন্ডোটি বন্ধ করুন এবং সমস্ত নির্বাচন করুন (Ctrl + A) >> অনুলিপি (Ctrl + C)


আসলে না, আমি তাদের ফাইলটিতে রাখতে চাই। আমার কেবল ক্লিপবোর্ড সংস্করণ থাকা দরকার যাতে তা না থাকে।
জনডোয়ায়

@ বেনিয়া হ্যাঁ, আমি এটি বুঝতে পেরেছি। প্রয়োজনীয় তথ্য না হওয়ায় আমি কেবল ফাইলটি অনুলিপি করার পরে ফাইলটি সংরক্ষণ করব না not আমি এটিকে কারণ হিসাবে প্রস্তাব করেছি কারণ ব্যক্তিগতভাবে আমি নোটপ্যাড ++ বেশ ভারীভাবে ব্যবহার করি এবং এটির অনুলিপি কীভাবে কাজ করে তা পরিবর্তন করা ফাইলটি অনুলিপি করা এবং সংরক্ষণ না করার জন্য একটি রেজেক্স ব্যবহার করার চেয়ে আমার আরও বিরক্তিকর হতে পারে। যেহেতু এটি কেবলমাত্র এই এক উদাহরণে যেখানে আমি নেতৃস্থানীয় চরিত্রগুলি চাই না, অন্যান্য ক্ষেত্রে 90% তে আমি চাই।
জর্ডানএসএস 21'27 এ 4'17

0

আমার উত্তর স্টিভেনের উত্তরের উপর ভিত্তি করে যা আমি সঠিক হিসাবে চিহ্নিত করেছি (তবুও এটিতে আমার কয়েকটি সমস্যা হয়েছিল এবং আমার সম্পাদনা প্রত্যাখ্যান করা হলেও আমি সম্পাদনা করার চেষ্টা করেছি)।

এই কোডটিই আমার পক্ষে সবচেয়ে ভাল কাজ করেছে:

TrimClipboard()
{
    linesArray := StrSplit(clipboard, "`n", "`r")

    newClip := ""

    for index, element in linesArray
    {   
        newClip .= trim(element) . "`r`n" 
    }

    clipboard := SubStr(newClip, 1, -2)
}

#IfWinActive ahk_class Notepad++
^c::
    Send, ^{sc02e}
    Clipwait
    TrimClipboard()
return

^x::
    Send, ^{sc02d}
    Clipwait
    TrimClipboard()
return

স্টিভেনের মূল কোড থেকে পার্থক্য:

  • আমি কমান্ডের প্রধান থেকে সেন্ডমোড ইনপুট সরিয়েছি কারণ এটি কোনও কারণে আমার স্ক্রিপ্টটি ভেঙে দিয়েছে।
  • আমি উভয় কী কম্বো থেকে শিফট কী সরিয়েছি কারণ আমি ব্যক্তিগতভাবে বেশিরভাগ সময় এটি ছাড়া কাজ করতে পছন্দ করি।
  • আমি যথাক্রমে প্রতিস্থাপন করেছি Send, ^cএবং Send, ^xসহ Send, ^{sc02e}এবং করেছি Send, ^{sc02d}। এটি হিব্রু মোডে এবং কিছু অন্যান্য অ-ইংরাজী ভাষা মোডে একটি পাঠ্য-মোছার বাগ প্রতিরোধ করে।
  • আমি মন্তব্যগুলি সরিয়েছি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.