क्लिपबोर्ड पर डेटा कॉपी करते समय अग्रणी टैब और / या प्रमुख स्थान कैसे छीनें?


13

मुझे Notepad ++ से क्लिपबोर्ड पर कॉपी किए गए डेटा से प्रमुख इंडेंट (टैब और स्पेस) को स्ट्रिप करने का एक तरीका चाहिए।

नोटपैड ++ डॉक्यूमेंट में मौजूद डेटा को इन प्रमुख इंडेंट में रखना चाहिए और क्लिपबोर्ड पर कॉपी किए गए डेटा को नहीं रखना चाहिए।

यह व्यवहार CTRL + C द्वारा अकेले शुरू किया जाना चाहिए और जब मैं Notepad ++ के अंदर हूं।


यह नोटपैड ++ में तब होता है जब मैं पाठ को माउस से नियमित रूप से चिह्नित करता हूं:

यहाँ छवि विवरण दर्ज करें

पाठ को नियमित रूप से चिह्नित करने और उसे कॉपी करने के बाद क्लिपबोर्ड में यही होना चाहिए:

यहाँ छवि विवरण दर्ज करें


टिप्पणियाँ:

  1. चित्र केवल मेरी आवश्यकता को बेहतर रूप से समझने के लिए हैं - मेरे वास्तविक कोड लंबे हैं।
  2. मैं भी इस बारे में पूछा यहाँ
  3. मैं यह पूछता हूं क्योंकि मैं लिनक्स टर्मिनल में इंडेंटेड कोड ब्लॉक पेस्ट नहीं कर सकता हूं अगर इन catकोडब्लॉक में हेरेडेन्सेन्मेंट्स शामिल हैं (हैरेडेजमेंट डेलिमिटर की प्रोसेसिंग, लंबी कहानी)।

आप कितनी पंक्तियों और वर्णों को कॉपी करना चाहते हैं? IE यह प्रमुख रिक्त स्थान को हटाने, कॉपी करने और फिर परिवर्तनों को पूर्ववत करने के लिए संभव होगा?
FCTW

क्या होगा यदि फ़ाइल या उसमें मौजूद कुछ लाइनों में कोई अग्रणी टैब न हो? आप हमेशा ऐसा क्यों करना चाहते हैं?
फुल्विक

1
आप इसकी आवश्यकता क्यों है? अग्रणी व्हाट्सएप को कष्टप्रद बनाता है?
mrjink

खोल में? यह एक समस्या नहीं होनी चाहिए। यदि यह अस्पष्ट है, तो विचार करें :set paste
मर्जिंक

शेल में, विम में नहीं। यह एक समस्या है क्योंकि जब आप catheredocs के साथ कोड पेस्ट करते हैं - यह है
जॉनडियो

जवाबों:


7

निम्नलिखित AutoHotKey (AHK) स्क्रिप्ट पर विचार करें । AutoHotkey स्क्रिप्ट पर अधिक स्पष्टीकरण के लिए 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चयन Ctrl+Cकरें।

इस उदाहरण को देखें: https://notepad-plus-plus.org/fr/features/column-mode-editing.html

संपादित करें:

हम पूरे कॉलम का चयन कर सकते हैं, या एक से अधिक कॉलम का भी, हम एक या कई पंक्तियों का भी चयन कर सकते हैं।

यहाँ यह करने के लिए एक सरल तरीका है:

  • बाईं माउस वांछित चयन की शुरुआत में क्लिक करें।

  • उस स्थान पर जाएं जहां वांछित चयन बंद होना चाहिए

  • कर्सर को उस दूसरे और अंतिम स्थान पर ले जाएँ, जिसके साथ:

    • वांछित कॉलम और पंक्तियों का चयन करने के लिए एक साथ ALT+ SHIFTकुंजी और ए पर हिट left click

उममीद है कि इससे मदद मिलेगी


1
मैं अपनी पिछली प्रतिक्रिया में कुछ और विवरण जोड़ता हूं, आशा है कि यह मदद करेगा।
यासीन

1
यह केवल तभी काम करता है जब सभी पंक्तियों में एक ही अग्रणी टैब या रिक्त स्थान हो
phuclv

1
दरअसल, हां, और सवाल यह था कि लाइनों का प्रारूप एक ही है
यसीन

1

यहां जावा का उपयोग कर एक पोर्टेबल-ईश समाधान है

पहला कदम, निश्चित रूप से, जावा को स्थापित करना है

अगला, Trimmer.javaअपनी उपयोगकर्ता निर्देशिका (C: \ Users \ your_name) में नामित फ़ाइल में निम्नलिखित पेस्ट करें

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

अब आपके पास उसी फ़ोल्डर में एक Trimmer.class फ़ाइल होनी चाहिए। अब आप Trimmer.java फ़ाइल को हटा सकते हैं।


इस बिंदु पर, हमारे पास एक ऐसा कार्यक्रम है जो क्लिपबोर्ड में प्रत्येक पंक्ति से सभी प्रमुख और अनुगामी सफेद रिक्त स्थान को हटा देगा, लेकिन हमें अभी भी इसे आसानी से चलाने का एक तरीका चाहिए। चलो इसके लिए एक हॉटकी बनाते हैं!

सबसे पहले, कमांड प्रॉम्प्ट पर एक शॉर्टकट बनाएं (C पर क्लिक करें: \ Windows \ System32 \ cmd.exe)

फिर, इस शॉर्टकट पर राइट-क्लिक करें और "गुण" चुनें। इस विंडो में हमें कुछ चीजें करने की आवश्यकता है। "शॉर्टकट" टैब में, "लक्ष्य" विकल्प होना चाहिए जो कुछ ऐसा कहता है

%windir%\system32\cmd.exe

इसे कहने के लिए बदलें

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

यह कमांड प्रॉम्प्ट को केवल हमारे प्रोग्राम को चलाने और इस शॉर्टकट का उपयोग करने पर बाहर निकलने का कारण बनेगा।

अगला, "शॉर्टकट कुंजी" बॉक्स पर क्लिक करें और उस हॉटकी को दबाएं जिसे आप टेक्स्ट प्रतिस्थापन को ट्रिगर करना चाहते हैं। मैं उपयोग की आसानी के लिए Ctrl+ Shift+ सलाह देता हूं C!

अंत में, "रन" विकल्प को "मिनीमाइज़्ड" में बदलें क्योंकि हम हर बार स्क्रीन पर पलक झपकते ही नहीं चाहते कि हम शॉर्टकट का उपयोग करें।


इस सब के बाद, आपको निम्नलिखित वर्कफ़्लो का उपयोग करने में सक्षम होना चाहिए:

  1. पाठ का उपयोग करके कॉपी करें CtrlC
  2. Ctrl+ Shift+ का उपयोग करके पाठ ट्रिम करेंC
  3. पाठ का उपयोग करके छंटनी पेस्ट करें CtrlV

हाय रेयान। मैं अकेले CTRL + C के साथ सब कुछ करने का एक तरीका ढूंढ रहा हूं, जब तक मैं नोटपैड ++ में हूं ... इसके अलावा, क्या इस स्क्रिप्ट को शुरू करने का एक तरीका है जब मैं विंडोज बूट कर रहा हूं?
जॉनडियो

0

शायद मुझे कुछ याद आ रहा है, लेकिन अन्य सभी उत्तर समाधान को जटिल करते हैं। अगर मुझे सही ढंग से समझ आ गया है कि आप क्या करना चाहते हैं, तो प्रमुख सफेद रिक्त स्थान (स्थान या टैब) हटा दें और आपके पास नोटपैड ++ में उपलब्ध डेटा है

जिस मामले में समाधान सरल है। में अपनी फ़ाइल खोलेंNotepad++ >> Search >> Replace... or Ctrl+H

क्या खोजें :^( *)[ ]|^\t*

के साथ बदलें : खाली छोड़ दें

हमारे द्वारा उपयोग किए जाने वाले सभी अग्रणी स्थान ^( *)[ ]को खोजने के लिए और सभी प्रमुख टैब को खोजने के लिए, हम उपयोग करते हैं ^\t*, जैसे कि सभी अग्रणी स्थान या सभी प्रमुख टैब जिन्हें हम या ऑपरेटर उपयोग करते हैं |। सुनिश्चित करें कि नियमित अभिव्यक्ति को प्रतिस्थापित विंडो में चुना गया है।

इसे जल्दी से खत्म करना चाहिए, भले ही यह एक बड़ी फाइल हो। रिप्लेस विंडो को बंद करें और सभी का चयन करें (Ctrl + A) >> कॉपी करें (Ctrl + C)


वास्तव में नहीं, मैं उन्हें फाइल में रखना चाहता हूं। मैं सिर्फ क्लिपबोर्ड संस्करण की जरूरत है उन्हें नहीं है।
जॉनडियो

@ बेनिया हाँ, मुझे समझ में आ गया। मैं सिर्फ डेटा की प्रतिलिपि बनाने के बाद फ़ाइल को नहीं बचा पाऊंगा क्योंकि इसकी आवश्यकता नहीं है। इसका कारण मैंने इसे सुझाया क्योंकि व्यक्तिगत रूप से मैं नोटपैड ++ का बहुत अधिक उपयोग करता हूं और यह बताता हूं कि यह कॉपी की गई रचनाओं की नकल करने के लिए regex का उपयोग करने की तुलना में मेरे लिए अधिक परेशान करने वाला होगा और फ़ाइल को सहेजने के लिए नहीं। चूंकि यह सिर्फ इस एक उदाहरण में है जहां मुझे अग्रणी चरित्र नहीं चाहिए, 90% अन्य मामलों में मैं करूंगा।
जॉर्डनजीएस

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

स्टीवन द्वारा मूल कोड से अंतर:

  • मैंने कमांड के प्रमुख से SendMode इनपुट हटा दिया क्योंकि इसने किसी कारण से मेरी स्क्रिप्ट को तोड़ दिया।
  • मैंने दोनों प्रमुख कॉम्बो से Shift कुंजी को हटा दिया क्योंकि मैं व्यक्तिगत रूप से ज्यादातर समय इसके बिना काम करना पसंद करता हूं।
  • मैं बदल दिया Send, ^cऔर Send, ^xसाथ Send, ^{sc02e}और Send, ^{sc02d}, क्रमशः। यह हिब्रू मोड और कुछ अन्य गैर-अंग्रेजी भाषा मोडों में एक टेक्स्ट-विलोपन बग को रोकता है)।
  • मैंने टिप्पणियाँ हटा दीं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.