উত্তর:
আপনি এই স্ক্রিপ্টটি vim.org থেকে ব্যবহার করতে পারেন:
http://www.vim.org/scripts/script.php?script_id=1071
কেবল এটি আপনার .vim/plugin
ডিরেক্টরিতে রাখুন এবং তারপরে :BufOnly
সমস্ত বাফারগুলি বন্ধ করতে কমান্ডটি ব্যবহার করুন তবে সক্রিয়টি ব্যবহার করুন । আপনি নিজের পছন্দ মতো অন্যত্র এটিও ম্যাপ করতে পারেন.vimrc
।
গিথুব-এ উত্স (উইম-স্ক্রিপ্টস আয়না দিয়ে): https://github.com/vim-scriptts/BufOnly.vim/blob/master/plugin/BufOnly.vim
এটা চেষ্টা কর
bufdo bd
বুফডো সমস্ত বাফারদের জন্য কমান্ড চালায়
bd
কমান্ডটি ভিআইএম বন্ধ করে দেওয়ার জন্য এটি করার আগে আপনি NERDTree বন্ধ করতে চাইতে পারেন ; nnoremap <silent> <leader>c :NERDTreeClose<bar>bufdo bd<CR>
।
:bufdo
'বাফার মুছতে বা বাফার তালিকায় বাফারগুলি যুক্ত করা উচিত নয়' এর যুক্তি সুতরাং যদি এই সমাধানটি কাজ করে তবে এটি দুর্ঘটনাক্রমে কাজ করে ... এবং এটি প্রায়শই আমার পক্ষে কাজ করে না (একটি ভিন্ন বাফারে স্যুইচ করে)।
আমি এটি খুব সহজেই এটি করতে সক্ষম হয়েছি:
:%bd|e#
:%bd|e#
%bd
= সমস্ত বাফার মুছুন। e#
= সম্পাদনার জন্য শেষ বাফারটি খুলুন। এর মাঝে থাকা পাইপ একের পর এক কমান্ড করে।
%bd|e#|bd#
হওয়া [No Name]
বাফার মুছতে ব্যবহার করতে পারেন ।
command! BufOnly silent! execute "%bd|e#|bd#"
|
:map <leader>o :%bd\|e#<cr>
আপনি যদি বর্তমানটির যত্ন না রাখেন তবে এমন কিছু করা আরও সহজ (কোনও স্ক্রিপ্টের দরকার নেই):
1,100bd
nnoremap <leader>bd :%bd | NERDTree<cr>
E16: Invalid range
কারণ পরিসরে কিছু বাফার আসলেই নেই। এটি সাম্প্রতিক অবধি এটি উপেক্ষা করে আসছিল।
:ls
যে আপনি প্রকৃতপক্ষে সবচেয়ে বড় বাফারটি খোলেন তা দেখতে এবং আপনার পরিসীমাটি সেট করে (যেমন যদি আপনার সর্বোচ্চ বাফারটি 22 হয় তবে :1,22bd
)। আমি এটি না করা পর্যন্ত আমি একই ত্রুটি পেয়েছি।
আমি এই কাজ
:w | %bd | e#
আমার প্রিয় যদি আমি কেবল আমার বর্তমান বাফারটি খুলতে এবং অন্য সকলকে বন্ধ করতে চাই।
এটি কীভাবে কাজ করে: প্রথমে বর্তমান বাফারের পরিবর্তনগুলি লিখুন, তারপরে সমস্ত উন্মুক্ত বাফারগুলি বন্ধ করুন, তারপরে আমি বর্তমানে যে বাফারটি ছিলাম তা আবার খুলুন। ভিমে,|
একসাথে আদেশগুলি কার্যকর শৃঙ্খলাবদ্ধ করে। আপনার বাফার আপ টু ডেট থাকলে উপরেরটি সংক্ষিপ্ত করা যেতে পারে:%bd | e#
%
সমস্ত নির্বাচক হিসাবে কাজ করতে পারে না। আপনি কিছু অনুমান করতে পারেন?
bufnr("$")
শেষ বাফার নম্বরটি দেয়। তবে আমি যখন এই জাতীয় ব্যবহার করি তখন স্ট্রিংয়ের সাথে ইন্টারপোল্ট করার কোনও ধারণা নেই :1,bufnr("$")bd
। হতে পারে .. সবচেয়ে ভাল সমাধান হবে :1,9999bd
।
:help :bd
শো :%bdelete " delete all buffers
। %
আপনি চান ঠিক তাই । আমি আপনার সমাধানের বৈকল্পিকটি ব্যবহার করি: :%bd<CR><C-O>:bd#<CR>
এটি সমস্ত বাফার মুছে ফেলবে, তারপরে <C-O>
বর্তমান ফাইলটিতে :bd#
অবস্থিতি পুনরুদ্ধার করতে, তারপরে অপরিবর্তিত বাফারটি সরাতে ব্যবহার করুন। এটি সমস্ত বাফার বন্ধ করে এবং আপনাকে একই স্থানে ফাইলে ফেলে দেয়।
জুয়ানানরুজের উত্তরে বিল্ডিং।
আপনি যে বাফারটি রাখতে চান তাতে একটি ছোট পরিবর্তন করুন
:1,1000bd
আদেশ bd
(বাফার মুছুন) সংরক্ষণ না করা পরিবর্তন সহ কোনও বাফার মুছে ফেলবে না। আপনি বাফার তালিকায় বর্তমান (পরিবর্তিত) ফাইলটি রাখতে পারেন।
সম্পাদনা: দয়া করে লক্ষ্য করুন যে এটি আপনার NERDTreeBuffer কেও মুছে ফেলবে। আপনি এটি দিয়ে ফিরে পেতে পারেন: NERDTree
set nohidden
সেট করার জন্য নির্ভর করে ?
সমস্ত উন্মুক্ত বাফার বন্ধ করা হচ্ছে:
silent! execute "1,".bufnr("$")."bd"
বর্তমানের ব্যতীত সমস্ত উন্মুক্ত বাফার বন্ধ করা :
function! CloseAllBuffersButCurrent()
let curr = bufnr("%")
let last = bufnr("$")
if curr > 1 | silent! execute "1,".(curr-1)."bd" | endif
if curr < last | silent! execute (curr+1).",".last."bd" | endif
endfunction
এই ফাংশনটিতে যুক্ত করুন .vimrc
এবং এটি ব্যবহার করে কল করুন :call CloseAllBuffersButCurrent()
।
সুবিধার মানচিত্র:
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
:%bd|e#|bd#
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>:NERDTree<CR>
আমি এটি আমার .vimrc ফাইলে রেখেছি
nnoremap <leader>ca :w <bar> %bd <bar> e# <bar> bd# <CR>
তারপরে আপনার leader + ca
(সমস্ত বন্ধ করুন) বর্তমান ব্যতীত সমস্ত বাফার বন্ধ করুন।
এটা কি করে
: ডাব্লু - বর্তমান বাফার সংরক্ষণ করুন
% বিডি - সমস্ত বাফার বন্ধ করুন
e # - সর্বশেষ সম্পাদিত ফাইলটি খুলুন
বিডি # - নামবিহীন বাফারটি বন্ধ করুন
একটি প্লাগইন আছে যা এটি এবং আরও কিছু করে!
পরীক্ষা করে দেখুন ক্লোজ-buffers.vim
আমি যা করি তা এখানে। সুতরাং আমি সমস্ত বাফার অপসারণের পরে আমার কার্সার অবস্থান ধরে রাখতে চাই এবং উপরের বেশিরভাগ সমাধান কেবল এই সত্যটিকে উপেক্ষা করে। আমি আরও মনে করি যে কমান্ডটি পুনরায় তৈরি করা টাইপ করার চেয়ে ভাল তবে এখানে আমি <leader>bd
সমস্ত বাফারগুলি সরিয়ে আমার মূল কার্সারের অবস্থানে ফিরে যেতে চাই।
noremap <leader>bd :%bd\|e#\|bd#<cr>\|'"
%bd
= সমস্ত বাফার মুছুন।
e#
= সম্পাদনার জন্য শেষ বাফারটি খুলুন (আমি যে বাফারটি নিয়ে কাজ করছি)।
bd#
আপনি যখন ব্যবহার করবেন তখন তৈরি হওয়া [কোনও নাম নেই] বাফার মুছতে %bd
।
এর মাঝে থাকা পাইপ একের পর এক কমান্ড করে। আপনি এটি ব্যবহার করে পালাতে হবে\|
'"
= আমার কার্সার অবস্থান রাখুন।
আমি পছন্দ করি 1,100bd
( জুয়ানানরুইজ প্রস্তাবিত ) যা আমার জন্য কাজ করে বলে মনে হচ্ছে।
আমাকে quit!
দেওয়ার জন্য আমি আমার ম্যাপিংয়ে একটি যুক্ত করেছি
nnoremap <leader>bd :1,100bd<CR>
nnoremap <leader>bdq :1,100bd<CR>:q!<CR>
এটি সমস্ত বাফারকে মেরে ফেলে এবং ভিমকে বন্ধ করে দেয়, যা আমি বেশিরভাগই সন্ধান করছিলাম।
bdq
ম্যাপিংয়ের কোনও কারণ নেই যা সমস্ত বাফার বন্ধ করে এবং ভিমে বেরিয়ে আসে :q!
, যখন পরিবর্তে আপনি কেবল ব্যবহার করতে পারেন :qa!
। আমি যদি কিছু উপেক্ষা না করি
কীভাবে ঠিক:
ctrl-w o
(ধন্যবাদ https://thoughtbot.com/blog/vim-splits-move-faster- এবং- আরো- প্রাকৃতিকভাবে )