ভিআই-মোডে বাশ-এ শেষ কমান্ডের শেষ প্যারামিটার


19

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

তবে আমি সত্যিই একটি বৈশিষ্ট্য মিস করছি: ইমাস-মোডে আপনি "ESC" টিপে পূর্ববর্তী কমান্ডের শেষ প্যারামিটারটি প্রবেশ করতে পারেন। (এটি হল প্রেসের পরে পালানো প্রেস))

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

উত্তর:


9

কোনও ডিফল্ট নেই। আপনি যখন ভিআই মোডে স্যুইচ করেন তখন 'ইয়াঙ্ক-লাস্ট-আরগ' (যেমন 'বাইন্ড-পি' তালিকাভুক্ত) এর জন্য বাইন্ডিং অদৃশ্য হয়ে যায়।

bind '"\e."':yank-last-arg

আপনাকে সেই একই বাঁধাই ফিরিয়ে দেবে (বা অন্য কিছু চয়ন করুন)


1
zsh এর জন্য ক্লোন করুনbindkey "\e." insert-last-word
jvvaras

আমি এটি বছরের পর বছর ধরে zsh এ পেয়েছি এবং প্রতিবারই আমি ব্যাশ ব্যবহার করতে বাধ্য করেছি (যেমন কর্মক্ষেত্রে একটি সার্ভারে) আমি কীভাবে বাশকে সেট আপ করতে পারি তা ভুলে যাব না। আর না! history-search-backwardsগুরুতর কমান্ড লাইন ব্যবহারকারীদের জন্য এটি একত্রে অমূল্য।
শ্রীধর সারনোবাত

11

(Vi-yank-arg) আছে, ডিফল্টরূপে "_" এ ম্যাপ করা হয়েছে। এটি আপনার যা করতে চান তা করা উচিত (কমান্ড মোডে)।


+1 টি। এই উত্তর কেন গৃহীত হয়নি তা আমি নিশ্চিত নই।
সত্যম

7

ঠিক একই নয়, তবে উভয় মোডে আপনি টাইপ করতে পারেন !$এবং এটি পূর্ববর্তী কমান্ডের শেষ শব্দটি দ্বারা প্রতিস্থাপন করা হবে। ম্যানুয়ালটিতে আরও এই জাতীয় জিনিসগুলি সন্ধান করুন


একটি উঁচু ধারণা পাওয়ার জন্য যথেষ্ট বন্ধ করুন তবে ঠিক একই নয় ... আমি লাইনটি সম্পাদন করার আগে সম্পাদনা করার সম্ভাবনাটি মিস করছি। তবে যাইহোক ধন্যবাদ!
মো।

5

~ / .Inputrc ফাইল কী মানচিত্রে কনফিগার করতে পারেন (আপনি ম্যানুয়াল দ্বারা এটি তৈরি করতে পারেন যদি এটা খুঁজে পাওয়া যাবে না)। Command / .inputrc এ নিম্নলিখিত কমান্ডটি যুক্ত করুন :

"\e.": yank-last-arg
"\e_": yank-last-arg

আমার ~ / .inputrc হ'ল:

set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on

set editing-mode vi
set keymap vi-insert

"\C-p": previous-history
"\C-n": next-history
"\C-a.":beginning-of-line
"\C-e.":end-of-line

"\e.": yank-last-arg
"\e_": yank-last-arg

আপনি রিডলাইন এবং bind -pএখানে বিস্তারিত জানতে পারেন : http://linux.about.com/library/cmd/blcmdl3_readline.htm

এবং বাশ এবং রিডলাইন ষষ্ঠ সম্পাদনা মোড চিট শিটের মধ্যে ভি কী কী-ব্লাইন্ডিংস সম্পর্কে কিছু তথ্য


3

আপনার .bashrc এর অভ্যন্তরে এগুলি যুক্ত করুন:

set -o vi
bind -m vi-command ".":insert-last-argument
bind -m vi-insert "\C-l.":clear-screen
bind -m vi-insert "\C-a.":beginning-of-line
bind -m vi-insert "\C-e.":end-of-line
bind -m vi-insert "\C-w.":backward-kill-word

এটি কেবলমাত্র ইসি-ডট-এরই নয় বরং Ctrl-A, Ctrl-E, Ctrl-W এবং Ctrl-L এর ডিফল্ট আচরণ পুনরুদ্ধার করবে। আপনি তাই সাধারণ ব্যাশ ভিআই-মোড উপভোগ করতে পারেন এবং এখনও আপনি জানেন এবং পছন্দ করেন এমন শর্টকাটগুলি ব্যবহার করতে পারেন। আপনার যদি আরও অ্যাকশনগুলির প্রয়োজন হয় তবে আপনার প্রয়োজনীয় রিডলাইন ক্রিয়াটির নাম (যেমন "ক্লিয়ার-স্ক্রিন", "লাইনের শেষ" ইত্যাদি) খুঁজে পেতে কেবল "ম্যান বাশ" পরীক্ষা করুন।


0

আপনি $_পূর্ববর্তী কমান্ডের শেষ যুক্তিটি উল্লেখ করতে ব্যবহার করতে পারেন ।

অসুবিধাগুলি হ'ল:

  1. আপনি এন্টার টিপানোর আগে যাচাই করতে পারবেন না যে sertedোকানো জিনিসটি সন্নিবেশ করানোর ইচ্ছা is

  2. যদি আপনি PROMPT_COMMAND বা একটি DEBUG ট্র্যাপ ব্যবহার করেন (তবে আমি নিশ্চিত নই যে সমস্যাটি সৃষ্টি করে; আমার .bashrc এ আমার উভয় আছে) এক্সটার্ম শিরোনামে চলমান কমান্ড রাখার মতো অভিনব জিনিসগুলি করার জন্য, এটি ক্লোবার হবে $_

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.