আমি যখন কোনও ভিএম ফাইলের নামটি শেষ করি তখন বাশ ট্যাব কেন একটি টিলডকে প্রসারিত করে?


8

যদি আমি টাইপ করি cat ~/.bashr<TAB>তবে এটি সম্পূর্ণ হয় cat ~/.bashrc

যদি আমি টাইপ করি vim ~/.bashr<TAB>তবে এটি সম্পূর্ণ হয় vim /home/neil/.bashrc...

(এটি একই রকম করে vi, যা এর সাথে সম্পর্কিত হয় "vim"))

আমি কি এটি বন্ধ করতে পারি?

উত্তর:


5

এটি / etc / bash_completion দ্বারা নিয়ন্ত্রিত হয়

আপনি পছন্দ না করলে _expand () এ সম্প্রসারণ কোডটি মন্তব্য করতে পারেন।

ফেডোরা ১ in-এ আমার সংস্করণটি এখানে রয়েছে তবে আপনার মত হওয়া উচিত:

# This function expands tildes in pathnames
#
_expand()
{
    # FIXME: Why was this here?
    #[ "$cur" != "${cur%\\}" ] && cur="$cur\\"

    # Expand ~username type directory specifications.  We want to expand
    # ~foo/... to /home/foo/... to avoid problems when $cur starting with
    # a tilde is fed to commands and ending up quoted instead of expanded.

    if [[ "$cur" == \~*/* ]]; then
        eval cur=$cur
    elif [[ "$cur" == \~* ]]; then
        cur=${cur#\~}
        COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
        [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
        return ${#COMPREPLY[@]}
    fi
}

1
সমাপ্তি স্ক্রিপ্টগুলির অবস্থান সম্পূর্ণ আপনার সিস্টেমে নির্ভর করে।
ড্যানিয়েল বেক

হুম, হতে পারে। ধন্যবাদ। আমি আজকাল কেবল উবুন্টু / ফেডোরা / সেন্টো ব্যবহার করি এবং মনে হয় যে ফাইলটি আছে। হ্যাঁ, যদি এটি অন্য ডিস্ট্রো হয় তবে আমি কল্পনা করতে পারি যে ফাইল / ফাংশনটি অন্য কোথাও অবস্থিত, তবে এখনও এটি সম্ভবত কোনও পাঠ্য ফাইল দ্বারা নিয়ন্ত্রিত।
johnshen64

4
ধন্যবাদ, আমি আমার সমস্যাটি "সংশোধন" করেছি একটি এর function _expand() { :;}মধ্যে দিয়ে ~/.bashrc
নীল

6

bashনির্দিষ্ট কমান্ডের জন্য আরও পরিশীলিত অটোমোপ্লেশন সরবরাহ করতে পারে (উদাহরণস্বরূপ ফাইলের নাম ব্যতীত স্বয়ংক্রিয় পদ্ধতিতে যুক্তিগুলি)। আপনার সিস্টেমে কমান্ডের জন্য এমন একটি প্রোগ্রামেবল সম্পূর্ণ ফাংশন সংজ্ঞায়িত করা আছে vim

completeকমান্ড প্রম্পটে টাইপ করা আপনাকে স্বতঃপূরণ প্রদান করতে কোন ফাংশন ব্যবহার করা হয় তা দেখাবে bash

$ complete
complete -o default -F _complete_open open

type function_nameতাদের সংজ্ঞা সম্পর্কে জানতে টাইপ করুন ।

$ type _complete_open
_complete_open is a function
_complete_open () 
{ 
   # function definition
}

ফাংশনটি কোথায় সংজ্ঞায়িত হয়েছিল তা সন্ধান করার জন্য। নিম্নলিখিত ব্যবহার:

$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.