म्यूट में वैकल्पिक फ़ाइल चयनकर्ता का उपयोग करें


13

में मठ , यह इस तरह के रूप में एक फ़ाइल ब्राउज़र का उपयोग करना संभव है vifm या रेंजर (संभवतः एक में tmux एक ईमेल से संलग्न करने के लिए फ़ाइल चुनने के लिए डिफ़ॉल्ट फ़ाइल ब्राउज़र के बजाय विभाजन)?



1
मठ के लिए प्रासंगिक मुद्दा
मथायस ब्रौन

जवाबों:


2

आप रेंजर को tmux विभाजन (आपके द्वारा सुझाए गए एक संभावना) में खोल सकते हैं, संलग्न होने के लिए फ़ाइल का चयन करें, फ़ाइल पथ का उपयोग करके इसके पथ की प्रतिलिपि बनाएँ ypऔर फिर म्यूट अटैच विंडो पर वापस लौटें, aअनुलग्नक पथ को दबाएं और दूरस्थ में फ़ाइल का नाम पेस्ट करें लाइन जो अटैच विंडो के नीचे खुलती है और दबाएँ Enter

फ़ाइल नाम में रिक्त स्थान के मुद्दे के बारे में (@Rastapopolous की टिप्पणी के जवाब में), मुझे एहसास हुआ कि मुझे उनका उपयोग न करने की मजबूत आदत है, लेकिन रेंजर से रास्ता चिपकाने की उपरोक्त विधि का पुन: परीक्षण कर रहा हूं, मुझे लगता है कि जब फ़ाइल का नाम रिक्त स्थान है, किसी कारण से, म्यूट में चिपकाए गए अनुलग्नक नाम में संलग्न नाम के हिस्से की पुनरावृत्ति है! कोई "उपांग" को हटाने के लिए बैकस्पेस दे सकता है और अटैचमेंट को आसानी से भेजा जाता है यहां तक ​​कि रिक्त स्थान से बचने के साथ भी। मैंने रेंजर से पथ की प्रतिलिपि का परीक्षण विम में किया और यह सही ढंग से चिपकाया, लेकिन म्यूट में नहीं।

चूँकि मैं आदतन tmux का उपयोग करता हूं, मुझे यह अपेक्षाकृत सरल तरीका लगता है।

वैकल्पिक रूप से और tmux के स्वतंत्र रूप से, मेरे पास मेरी .bashrc में निम्न स्क्रिप्ट भी है:

# email an attachment
function mail_attach ()
{
    mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}

export -f mail_attach

यह उपयोगी है जब आप जानते हैं कि आप एक ईमेल लिखने से पहले संलग्न करेंगे। तो, रेंजर के भीतर से, एक फ़ाइल का चयन करता है, sशेल कमांड लाइन खोलने के लिए टाइप करता है और चयनित फ़ाइल को इंगित करता है %f, जो है:

:shell mail_attach %f

दबाने Enterसे एक ईमेल की रचना के लिए म्यूट संपादक खुल जाएगा जिसमें पहले से ही चयनित फ़ाइल संलग्न है। हालाँकि, फिर प्राप्तकर्ता ईमेल पते को वांछित में बदलना चाहिए। शायद ईमेल संपादक को रिक्त "टू" फ़ील्ड के साथ खोलने के लिए फ़ंक्शन को बदलने का एक तरीका है, लेकिन मुझे पर्याप्त नहीं पता है। हालाँकि, मुझे यह बड़ी बात नहीं लगती।

एकाधिक फ़ाइलों के लिए, यदि वे समान फ़ोल्डर में हैं, तो मैं उन सभी का चयन करता हूं और फिर प्रेस @करता हूं जो शेल कमांड लाइन को खोलने के लिए एक रेंजर शॉर्टकट है, जहां %sचयनित फ़ाइलों का संदर्भ है:

:shell %s

फिर एक बस डालने mail_attachसे पहले %sऔर एंटर दबाने पर ईमेल कंपोज़ करने के लिए म्यूट खुल जाएगा जिसमें पहले से ही सभी चुनिंदा फाइलें जुड़ी हुई हैं। यदि आप अलग-अलग फ़ोल्डरों से फाइल अटैच करना चाहते हैं, तो मुझे नहीं पता कि कैसे करना है इसके अलावा उन्हें एक ही फोल्डर में इकट्ठा करना है।

मैं इस बात का श्रेय देना चाहूंगा कि जिसने भी फंक्शन बनाया है, लेकिन मैं नहीं जानता कि यह कहां से आया है। मुझे पता है कि यह मैं नहीं था।


आपके उत्तर के लिए धन्यवाद! मैंने अभी एक वैकल्पिक, थोड़ा अधिक सुव्यवस्थित तरीका पोस्ट किया है, जो आपको दिलचस्प लग सकता है।
रास्टापोपोलोस

विकल्प के लिए बहुत बहुत धन्यवाद, हालांकि, मुझे लगता है कि मैं भी रेंजर के प्रति वचनबद्ध हूं और उसी समय, आपकी लिपि को रेंजर के अनुकूल बनाने के लिए कौशल की कमी है!
जॉन फ्लड

मैंने उस स्क्रिप्ट को अनुकूलित किया है जिसे मैंने रेंजर के लिए पोस्ट किया है। केवल नकारात्मक पक्ष यह है कि उनमें रिक्त स्थान वाले फ़ाइलनाम के लिए काम नहीं करता है। (क्या यह सिर्फ मेरे उत्परिवर्तन का संस्करण है, या 'अटैच फ़ाइल
कंपोज़

अच्छी चाल, और आप :shell mutt -a %fसीधे से भी कर सकते हैं ranger
रास्तोपोपोलोस

1
"शाब्दिक वापसी चरित्र" की आपकी व्याख्या ने चाल चली! आपकी मूल स्क्रिप्ट अब मेरे लिए काम करती है। धन्यवाद @Rastapopoulos!
जॉन फ्लड

1

@ जॉन फ्लड के जवाब ने मुझे इस बारे में थोड़ा और सोचने के लिए प्रेरित किया, और मैं निम्नलिखित वर्कअराउंड के साथ आया, जो काफी अच्छी तरह से काम करता है।

निम्नलिखित लिपि को mutt_attachकहीं न कहीं $PATH, (जैसे , यह इन्सर्ट मोड में दबाकर प्राप्त किया जाता है) के Returnबजाय लिटरल कैरेक्टर के साथ सेव करें ।^Mvim<c-v><Return>

#!/usr/bin/env bash

tmp=$(mktemp)

vifm "$HOME" -c "set nohlsearch" --choose-files "$tmp"
# ranger "$HOME" --choosefiles="$tmp"

while IFS="" read -r file; do
    tmux send-keys -t email:Email.0 -l "a$file^M";
done < "$tmp"

में .muttrc, परिभाषित करें

macro compose \CA "!mutt_attach\n"

अब यदि आप नाम वाले सत्र में muttविंडो के पहले फलक में खुलते हैं (उदाहरण के लिए, उदाहरण के लिए, कमांड के साथ । सत्र निर्दिष्ट करना, विंडो और फलक ज्यादातर डिबगिंग उद्देश्यों के लिए सुविधाजनक है) और कंपोज़ मेनू में दबाएं , मोड में खुल जाएगा , और चयनित फ़ाइल स्वचालित रूप से संलग्न होगी।Emailtmuxemailtmux new -s emailControl+Avifmchoose-files

बेहतर अभी तक, यह आपको (या दृश्य मोड) vifmका उपयोग करने में कई फ़ाइलों को टैग करने देता है t, और rangerउपयोग करने में Space, और उन सभी को एक ही समय में संलग्न करता है!

संपादित करें : मैंने देखा कि कोड में ऐसे फ़ाइलनामों के लिए काम नहीं किया जाता है, जिनमें व्हॉट्सएप होते हैं, क्योंकि मेरे म्यूट के संस्करण में अटैचमेंट कंपोज मेनू में जगह टाइप करना असंभव लगता है ... यहाँ एक (कुछ बदसूरत) वर्कअराउंड है:

#!/usr/bin/env bash

# File in which to store the list of filenames to attach
tmp=$(mktemp)

vifm "$HOME" -c "set nohlsearch" --choose-files "$tmp"
# ranger "$HOME" --choosefiles="$tmp"

while IFS="" read -r file; do

    # Workaround for filenames that contain spaces
    if [[ "$file" = *" "* ]]; then
        file_no_space=/tmp/$(basename "$file" | sed 's/ /_/g')
        ln -s -f "$file" "$file_no_space"
        file="$file_no_space"
    fi

    tmux send-keys -t email:Email.0 -l "a$file^M";
done < "$tmp"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.