2009-05-02 12 views
5

मैं पाठ के 7 लाइनों है:एक पुन: प्रयोज्य Textmate आदेश में एक भी एसईडी आदेश मुड़ें

a, 
b, 
c, 
d, 
e, 
f, 
g, 
:

a 
b 
c 
d 
e 
f 
g 

अब मैं के साथ समाप्त करने के लिए, प्रत्येक पंक्ति के अंत में पात्रों को जोड़ना चाहते हैं

मैंने पाया कि मैं "sed" आदेश का उपयोग करें और के माध्यम से अपने चयन को चला सकते हैं sed का उपयोग कर Textmate

sed 's/$/,/' 

नहीं में "कमांड के माध्यम से फ़िल्टर करें" डब्ल्यू, एक सवाल बनी हुई है: मैं इसे टेक्स्टमैट कमांड में कैसे बदलूं जो किसी तरह से इनपुट लेता है (इसलिए यह जानता है कि कौन सा पाठ संलग्न करना है)?

(मेरे ऐसा करने में असफल कोशिश करता सिद्ध कर दिया है)

उत्तर

3

पाठ समूह के अंदर स्थित एक आदेश में पॉप यही नहीं, यह जोड़ना होगा जो कुछ भी चयनित किया गया है सभी लाइनों के अंत करने के लिए क्लिपबोर्ड में है:

#!/bin/bash 
if [[ $(pbpaste|wc -l) -eq 0 ]] 
    then r=`pbpaste` 
    sed 's/$/'$r'/' 
    else sed 's/$/,/' 
fi 

यह वर्तमान की एक पंक्ति के मूल्य जोड़कर तक ही सीमित है पाठ, यदि क्लिपबोर्ड में एक से अधिक पंक्तियां हैं तो यह चयनित लाइनों के अंत में एक अल्पविराम के लिए डिफ़ॉल्ट होगी।

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

#!/bin/bash 
r=$(CocoaDialog inputbox --title "String to be appended to EOL" \ 
    --informative-text "Enter string:" \ 
    --button1 "Okay" --button2 "Cancel") 

[[ $(head -n1 <<<"$r") == "2" ]] && exit_discard 

r=$(tail -n1 <<<"$r") 

sed "s/$/$r/" 
:

इस थोड़ा आगे लेने के लिए, यहाँ एक संस्करण है कि एक संवाद बॉक्स जो स्ट्रिंग के इनपुट कि चयन में प्रत्येक पंक्ति से जोड़ दिए जाएंगे लिए संकेत देता है प्रदान करता है है

2

में पाठ मेनू वहाँ पहले से किसी आदेश "संपादित चयन में प्रत्येक पंक्ति" है वास्तव में ऐसा करते हैं। यह कर्सर को पहली पंक्ति पर रखेगा और आप प्रत्येक पंक्ति पर दोहराएंगे।

+0

मुझे पता है; लेकिन ऐसा लगता है कि यह प्रीपेड करने में सक्षम नहीं है। यदि मैं लाइन की शुरुआत में अपना कर्सर डालता हूं, तो शॉर्टकट दबाएं, फिर यह अंत तक कूद जाता है। मैं कॉलम चयन का उपयोग कर सकता हूं लेकिन फिर मैं माउस का फिर से उपयोग कर रहा हूं, जो पर्याप्त तेज़ नहीं है। – Wolfr

+2

कॉलम चयन को माउस की आवश्यकता नहीं है। पेज अप + शिफ्ट का उपयोग करें और पूरा होने पर विकल्प दबाएं। मुझे sed के बारे में पता नहीं है। लेकिन टेक्स्टमैट में आप बंडल कमांड को बहुत आसानी से लिख सकते हैं जो sededed text के साथ चयन को प्रतिस्थापित करता है यदि आप sed/ruby ​​/ regex + ruby ​​इत्यादि जानते हैं। – nexneo

2

बंडल संपादक

#!/bin/bash 
sed 's/$/,/' 

इनपुट लटकती पर में एक नया आदेश बनाएं चुनें चयनित लेख या कुछ भी नहीं
उत्पादन पर चयन मौजूदा पाठ बदलें

मैं बस का परीक्षण किया यह और यह ठीक काम करता है।
आप इसे और अधिक कुशल बनाने के लिए कीबोर्ड शॉर्टकट भी चुन सकते हैं।

2

आप कमांड मार्ग से बचने के लिए और बस ढूँढें का उपयोग/संवाद निम्नलिखितानुसार करना बदलें तैयार हैं:

  • प्रकाश डाला/लाइनों का चयन करने के लिए आप
  • खोलने को संशोधित करना चाहेंगे खोजें संवाद
  • जांच 'रेगुलर एक्सप्रेशन'
  • क्षेत्र 'खोज' में
  • , '$'
  • 'बदलें' क्षेत्र में
  • (पंक्ति के अंत का संकेत करने के) जोड़ने के लिए, ',' जोड़ने (आप क्या संलग्न करना चाहते हैं)
  • Option पकड़, यह बदल जाएगा "चयन में"

इस तकनीक को अन्य उपयोगी तरीके का एक संख्या में लागू किया जा सकता करने के लिए "सभी बदलें"। उदाहरण के लिए, यदि आप प्रत्येक पंक्ति को उपसर्ग करना चाहते हैं तो '$' से '^' बदलना।

संबंधित मुद्दे