'নামের ফাইল তৈরি করা এড়ানোর জন্য কী alias: w'` to `: w` এর কোনও উপায় আছে?


9

কখনও কখনও, আমার গোলাপী 'প্রবেশের সময় পৌঁছনোর সময় কীটি চরে ফেলবে , ফলস্বরূপ :w'<Enter>

আমি চেষ্টা করেছিলাম:

cabbrev w' :w
cabbrev w\' :w
cabbrev "w'" :w

এদের কেউই কাজ করে না। ওরফে :w'যাওয়ার কোনও উপায় আছে কি :w?

আমি সাধারণ কমান্ড-লাইনের পরিবর্তে সেমিডুইন ( :help cmdwin+ nnoremap : :<C-F>) ব্যবহার করি , সুতরাং বোনাস পয়েন্ট যদি এটি সেখানেও কাজ করে।


3
Hah; আমার একই সমস্যা
Mart

উত্তর:


8

পিটার রিনকার যেমন উল্লেখ করেছেন, এসগুলি cmapঅন্য জায়গায়ও প্রসারিত cnoreabbrevহতে পারে , তবে এটি আরও ভাল হবে :

cnoreabbrev w' w

বা, সবচেয়ে নিরাপদ, আবার পিটারকে ধন্যবাদ:

cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"

কমান্ড লাইনে কেবলমাত্র রয়েছে কি না তা স্পষ্ট করে পরীক্ষা করে w', পরিস্থিতিতে পরিস্থিতিতে অযাচিত বিস্তৃতি এড়ানো যায়।

আপনি এটি ব্যবহার করতে পারেন cmap:

cmap w' w

আপনি এখনও টিপতে হবে Enter, কিন্তু একটি দুর্ঘটনা 'এখন উপেক্ষা করা উচিত।

আপনি যদি ব্যবহার করছেন তবে এটির cmdwinএকটি inoremapসেট কার্যকর autocmdহতে পারে:

autocmd CmdwinEnter * inoremap w' w
autocmd CmdwinLeave * iunmap w'

আমি দৌড়েছি :cmap w' w, কিন্তু আচরণে কোনও পরিবর্তন হয়নি। :w'এখনও একটি ফাইল লিখিত ফলাফল '"'" [New] 0L, 0C written
mwcz

@ এমডব্লিউজ 'আপনি যখন এটি টিপছেন তখন আসলে কি তা প্রদর্শিত হবে w? এটি cmapসফলভাবে তৈরি করা হয়েছিল কিনা তা নয় - একটি cmap এলএইচএস স্বয়ংক্রিয়ভাবে আরএইচএসের সাথে পূর্ণ হয়ে যায়, তাই আপনি যদি একটি টিপেন ', এটি এখনও কেবল প্রদর্শিত হবে w
মারু

1
খালি cmapএবং এর সাথে সতর্কতা অবলম্বন করুন cabbrev। তারা অন্যান্য মোড এবং অন্যান্য জায়গায় কার্যকর / প্রসারিত করবে। যেমন :s/'follow'/fooএবং /'follow'। দয়া করে নীচের ভিএম পরিবর্তনটি দেখুন: সেফ
পিটার রিনকার

1
দু: cnoreabbrev <expr> w' getcmdtype() == ":" && getcmdline() == "w'" ? "w" : "w'"
খের

হ্যাঁ, 'এখনও দেখা যাচ্ছে, তবে আমি কেবল এটি আবিষ্কার করেছি কারণ আমি কমান্ডগুলি সন্নিবেশ করানোর জন্য সেমিডুইন ব্যবহার করছি এবং সেমিডউইন কেবল একটি নিয়মিত বাফার, সুতরাং cmap/cnoreabbrevসেখানে কাজ করবেন না। noreabbrevসেমিডিউইন ব্যবহারকারীদের জন্য বিকল্পের সাথে উত্তর আপডেট করা । :) ধন্যবাদ !!!
mwcz

0

এই পদ্ধতিটি আমার পক্ষে কাজ করে:

:ca w' w

বিকল্পভাবে আপনি যখন Esc দুবার আঘাত করেন তখন আপনি বর্তমান বাফারটি সংরক্ষণ করতে আপনার ভিএম সেট আপ করতে পারেন, যেমন

:map <Esc><Esc> :w<CR>

অথবা Ctrl+ sবা দ্বারা ফাইল সংরক্ষণ করতে নিম্নলিখিত ম্যাপিং ব্যবহার করুন F2:

nmap <c-s> :w<CR>
vmap <c-s> <Esc><c-s>gv
imap <c-s> <Esc><c-s>

nmap <F2> :update<CR>
vmap <F2> <Esc><F2>gv
imap <F2> <c-o><F2>

দ্রষ্টব্য: F2 শুধুমাত্র প্রয়োজনে সংরক্ষণ করে এবং প্রয়োজন অনুসারে ব্যবহারকারী মোড sertোকাতে (বা তাদের চাক্ষুষ নির্বাচন পুনরুদ্ধার করে) ফিরিয়ে দেয়।

উত্স: উইম উইকিয়ায় একটি ফাইল সংরক্ষণ করা

অথবা নিম্নলিখিত বিকল্পগুলি ব্যবহার করুন:

  • :up( :update) জন্য:w
  • ZQ জন্য :q
  • ZZজন্য :wqবা:x

প্রশ্নে উদ্ধৃতি চিহ্ন লক্ষ্য করুন। :w'না :w। আমি :wদুর্ঘটনাক্রমে আঘাত না করে ব্যবহার করতে চাই ', যা আমার অবশ্যই তখন একটি ফাইল লিখবে rm \'। ভাল টিপস, যদিও।
mwcz

1
Ctrl-S একটি সিগস্টপ প্রেরণ করে না - যদি প্রোগ্রামটি বন্ধ হয়ে যায় তবে সম্ভবত এটি কোনও বাফার পূর্ণ ছিল। দেখুন unix.stackexchange.com/questions/13629/... '
muru
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.