ভিমে আমার কাজের উপর নির্ভর করে আমার বেশ কয়েকটি ট্যাব খোলা আছে।
পরে ব্যবহারের জন্য আমি কীভাবে বিভিন্ন সেশন সংরক্ষণ করতে পারি?
ভিমে আমার কাজের উপর নির্ভর করে আমার বেশ কয়েকটি ট্যাব খোলা আছে।
পরে ব্যবহারের জন্য আমি কীভাবে বিভিন্ন সেশন সংরক্ষণ করতে পারি?
উত্তর:
আপনি কিছু চান
:mksession ~/mysession.vim
তারপরে আপনি সেই ভিএম ফাইলটি উত্স করতে পারবেন এবং আপনার পুরানো সেশনটি ফিরে আসবে:
:source ~/mysession.vim
অথবা -S বিকল্পের সাথে ভিমটি খুলুন:
$ vim -S ~/mysession.vim
Session.vim
। তাই আপনি যদি শুধুমাত্র শুধুমাত্র একটি অধিবেশন আপনার বর্তমান ডিরেক্টরির মধ্যে সংরক্ষণ করা করতে চান, আপনি ব্যবহার করতে পারেন :mksession
বা :mks
তেজ থেকে আপনার বর্তমান সেশন সংরক্ষণ করতে, এবং শুধুমাত্র vim -S
এটা ব্যাক আপ খুলুন।
আপনি আপনার ভিএমআরসিতে এই সেশন বিকল্পগুলি সেট করতে চাইতে পারেন। বিশেষ করে বিকল্পগুলি বিরক্তিকর যখন আপনি সেশনটি সংরক্ষণ করার পরে আপনার ভিএমআরসি পরিবর্তন করেছেন।
set ssop-=options " do not store global and local values in a session
set ssop-=folds " do not store folds
দ্রষ্টব্য: mksession আপনার তৈরি করা কোনও ফাইলের পরিবর্তনগুলি সংরক্ষণ করবে না। আমি সেখান থেকে গ্রহণ করব এই ধারণা করে সেশনটি সংরক্ষণ করার পরে ভিএম বন্ধ করার এই ভুলটি করেছি। তবে পরের বার আমি অধিবেশনটি খোলার পরে ফাইলগুলিতে আমার যে পরিবর্তনগুলি হয়েছিল তা চলে গেল।
:mksession
।
:wqa
:xa
একটি কম কীস্ট্রোক। হ্যাঁ!
.vimrc
: vimrc au FocusLost * silent! wa
এটি বাফারের ফোকাস হারিয়ে যে কোনও সময় স্বয়ংক্রিয়ভাবে সংরক্ষণ করবে।
আপনি যদি নিজের ফাইল এক্সপ্লোরার / ড্যাশ হিসাবে NERDTree ব্যবহার করেন তবে আমি বিল্ট-ইন: mksession কমান্ডের পরিবর্তে xolox / vim-सत्र প্লাগইনটি সুপারিশ করব । কোনও কারণে,: এমকেসিওশন NERDTree বাফারগুলি পুনরুদ্ধার করতে ব্যর্থ। আপনার মাইলেজটি ভিন্ন হতে পারে তবে আমি ভেবেছিলাম আমার অভিজ্ঞতাটি ভাগ করে নিই।
let g:nerdtree_tabs_open_on_gui_startup=0
এবং let g:nerdtree_tabs_open_on_new_tab=0
xolox / vim- সেশনের কাজ করতে।
আপনি যদি কোনও প্লাগইন ব্যবহার না করে প্রক্রিয়াটি স্বয়ংক্রিয় করতে চান তবে আপনি যান দূরে ব্যবহার করতে পারেন এবং ভিম টিপস উইকি থেকে ফিরে আসতে পারেন ।
প্রতিবার আপনি যখন ভিম থেকে প্রস্থান করবেন এটি বর্তমান সেশনটির নীচে সংরক্ষণ করবে ~/.vim/sessions
এবং ভিম খোলার পরে এটি আবার লোড করবে। এটি আপনার বর্তমান পাথের উপরও নির্ভর করে, সুতরাং আপনি যদি ভিমকে বিভিন্ন ডিরেক্টরি থেকে খুলেন তবে আপনার বিভিন্ন সেশন থাকবে, যা বিভিন্ন প্রকল্পে কাজ করার সময় বেশ কার্যকর।
আপনার ~/.vimrc
ফাইলটি সম্পাদনা করুন এবং নিম্নলিখিতগুলি যুক্ত করুন:
function! MakeSession()
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
if (filewritable(b:sessiondir) != 2)
exe 'silent !mkdir -p ' b:sessiondir
redraw!
endif
let b:filename = b:sessiondir . '/session.vim'
exe "mksession! " . b:filename
endfunction
function! LoadSession()
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
let b:sessionfile = b:sessiondir . "/session.vim"
if (filereadable(b:sessionfile))
exe 'source ' b:sessionfile
else
echo "No session loaded."
endif
endfunction
" Adding automatons for when entering or leaving Vim
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()
এমনকি কোনও শিক্ষানবিশের জন্যও এই স্ক্রিপ্টটি কিছুটা সহজ বোঝা এবং কাস্টমাইজ করা সহজ।
দয়া করে মনে রাখবেন এই স্ক্রিপ্টটি কেবল ইউনিক্স সিস্টেমের জন্য সঠিকভাবে কাজ করবে (ম্যাকস / লিনাক্স), এটি উইন্ডোতে কাজ করার জন্য খাপ খাইয়ে নেওয়া দরকার।
আপডেট: যোগ করার পদ্ধতি 0xc0de এর প্রস্তাবনা, আপনি প্রতিস্থাপন করতে পারি VimEnter
আপনি লোড সেশনের তেজ চান তাহলে এই বেশী জন্য লাইন শুধুমাত্র যদি কোন যুক্তি প্রদান করা হয় :
if(argc() == 0)
au VimEnter * nested :call LoadSession()
endif
if argc() == 0 au VimEnter * nested :call LoadSession() end
pwd
) কীভাবে আমি প্রস্থান করার আগে ভিএম থেকে বেরিয়ে আসার আগে এটি শেষ কার্যক্ষম ডিরেক্টরি হতে পারি? যাতে এটি অধিবেশনটির চেয়ে শেষ কার্যক্ষম অধিবেশনটি লোড করতে পারে ~/
?
এই কাজের জন্য একটি খুব দরকারী প্লাগইন আছে vim-startify যা সম্প্রতি খোলা ফাইলগুলি ইত্যাদির মতো অন্যান্য অনেক কিছুই পরিচালনা করে, এটির খুব সহজ ইন্টারফেসও রয়েছে।
আমি কয়েক দিন ধরে এটি ব্যবহার করছি এবং এখন পর্যন্ত এটি পুরোপুরি কার্যকরভাবে কাজ করছে। আশা করি এটি আপনাকে সহায়তা করবে।
যেহেতু ভিমের সেশনগুলির সাথে কীভাবে কাজ করবেন তার জন্য এটি আমার (এবং সম্ভবত অন্যদের) জন্য গুগলের প্রথম হিট আমি কীভাবে এই স্বয়ংক্রিয়ভাবে তৈরি করব সে সম্পর্কে @ মাথেলিওর উত্তরে কিছুটা যুক্ত করার সিদ্ধান্ত নিয়েছি।
আমি তার কোডটি পছন্দ করি তবে "আরগস ছাড়াই কেবল যদি" সমাধানটি যুক্ত করা কিছুটা অভাবজনক বলে মনে হয়েছিল। এটি আমার পরিবর্তিত সংস্করণ:
function! MakeSession(overwrite)
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
if (filewritable(b:sessiondir) != 2)
exe 'silent !mkdir -p ' b:sessiondir
redraw!
endif
let b:filename = b:sessiondir . '/session.vim'
if a:overwrite == 0 && !empty(glob(b:filename))
return
endif
exe "mksession! " . b:filename
endfunction
function! LoadSession()
let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
let b:sessionfile = b:sessiondir . "/session.vim"
if (filereadable(b:sessionfile))
exe 'source ' b:sessionfile
else
echo "No session loaded."
endif
endfunction
" Adding automatons for when entering or leaving Vim
if(argc() == 0)
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession(1)
else
au VimLeave * :call MakeSession(0)
endif
এখানে উল্লেখযোগ্য পরিবর্তনটি হ'ল alচ্ছিক ওভাররাইড। আপনি যদি বিকল্পগুলি ছাড়াই ভিমটি খোলেন এটি কোনও বিদ্যমান সেশন খুলবে এবং আপনি চলে যাওয়ার সময় পরিবর্তনগুলি ওভাররাইট করবে। যদি ভিএম অপশন সহ খোলা হয় তবে এটি কেবলমাত্র একটি নতুন সেশন তৈরি করবে যদি কোনটিই না থাকে তবে এর অর্থ আপনি একটি ডিরেক্টরিতে ওভাররাইট না করে একটি অধিবেশন থাকতে পারে এমন একটি ডিরেক্টরিতে খুলতে পারবেন। তারপরে আপনি সেশনটি চালানোর বিকল্প ছাড়া ভিমটি খুলতে পারেন। যদি কোনও অধিবেশন উপস্থিত না থাকে তবে এটি একটি নতুন ইভেন্ট তৈরি করে।
$HOME/.vim/plugin/sessions.vim
তবে এটি সেশন ফাইলগুলি সংরক্ষণ করছে না। ¯ \ _ (ツ) _ / ¯
এই দুর্দান্ত প্লাগইন কলটি ভিএম-সেশন রয়েছে । এটা খুব শক্তিশালী। এটি ইনস্টল করতে:
cd ~/.vim/bundle
git clone https://github.com/xolox/vim-session.git
আমি আমার .vimrc
ফাইলে এর কার্যকারিতাটি ম্যাপ করেছি :
nnoremap <leader>so :OpenSession
nnoremap <leader>ss :SaveSession
nnoremap <leader>sd :DeleteSession<CR>
nnoremap <leader>sc :CloseSession<CR>
এখন সাধারণ মোডে কেবল টাইপ করুন <leader>ss
এবং আপনি এরকম একটি কমান্ড দেখতে পাবেন
:SaveSession
এখন আপনার সেশনের নাম যুক্ত করুন
:SaveSession namesession
এবং যে সব.
আপনি যখন ভিমটি বন্ধ করেন এবং এটি আবার খোলেন ঠিক তেমন করুন
:OpenSession
এবং আপনি আপনার সেশনটি উন্মুক্ত দেখতে পাবেন।
আপনার .vimrc
ফাইলটিতে যুক্ত করার জন্য আরও অনেকগুলি কনফিগারেশন রয়েছে উদাহরণের জন্য ডকুমেন্টেশন দেখুন:
let g:session_directory = "~/.vim/tmp/session" // the directory must be created before the sessions will be saved there
let g:session_autoload = "no" // automatic reload sessions
let g:session_autosave = "no" // autosave
let g:session_command_aliases = 1
ইউটিউবে একটি ভাল টিউটোরিয়াল আছে।
ব্যক্তিগতভাবে আমি টিম পোপের অবসেশন প্লাগইনটি কেবলমাত্র একটি সংজ্ঞায়িত করতে sessiondir
এবং পথটি টাইপ করা এড়ানোর জন্য আবদ্ধ করি:
let g:sessiondir = $HOME . ".vim/sessions"
command! -nargs=1 MkSession call MkSession(<f-args>)
function! MkSession(sessionfile)
if !isdirectory(g:sessiondir)
call mkdir(g:sessiondir, "p")
endif
exe 'Obsession' g:sessiondir . '/' . a:sessionfile
endfunction
command! -nargs=1 LoadSession call LoadSession(<f-args>)
function! LoadSession(sessionfile)
let a:sessionpath = g:sessiondir . a:sessionfile
if (filereadable(a:sessionpath))
exe 'source ' a:sessionpath
else
echo "No session loaded."
endif
endfunction
ধন্যবাদ @ মথিওলো @ মথেলিওর উদাহরণ অনুসরণ করে, আমি সক্রিয় সেশনটি সংরক্ষণ করার জন্য নীচের লাইনটি .vimrc এ যুক্ত করেছি (যদি থাকে):
au VimLeave * if this_session != "" | exe "mksession! ".this_session
আপনি যদি আরও লাইন রাখতে চান তবে আপনাকে এন্ডিফ ব্যবহার করতে হবে:
au VimLeave * if v:this_session != ""
au VimLeave * exe "mksession! ".this_session
au VimLeave * endif
আপনার সাথে কেবলমাত্র একটি নতুন সেশনটি সংরক্ষণ করতে হবে
:mks [Session filename]
এবং পরে শুরু
$ vim -S [Session filename]
ভিএম অধিবেশনটি শুরু করবে এবং প্রতিবার আপনি যখন ভিএমটি বন্ধ করবেন তখন সেশনটি সংরক্ষণ করার জন্য আপনাকে চিন্তা করার দরকার নেই।
আপনার যদি সক্রিয় অধিবেশন না থাকে v Vimrc কিছুই করবে না। পূর্বের মত.
এটাই আমি খুঁজছিলাম! আবার ধন্যবাদ @ মাথেলিও!
:q
পরিবর্তে কতবার আমার সেশন হারিয়েছি :bd
... ধন্যবাদ!
আপনি যদি প্রকল্পের জন্য কেবলমাত্র 1 টি অধিবেশন থাকার পরিকল্পনা করেন তবে ঠিক করুন
:mks
যা Session.vim
বর্তমান ডিরেক্টরিতে একটি ফাইল তৈরি করবে এবং তারপরে সেশনটি খুলতে হবে (একই ডিরেক্টরি থেকে):
vim -S
আপনি যদি সেশনটি পরিবর্তন করেন এবং এটি সংরক্ষণ করতে চান:
:mks!
এটি সেশনটি সংরক্ষণ করে, ফাইলগুলি নিজেরাই নয়!
আপনি যদি একাধিক সেশন করার পরিকল্পনা করেন তবে আমি তাদের প্রকল্পের ডিরেক্টরিতে লুকানো ফাইলগুলিতে সংরক্ষণ করতে পছন্দ করি:
:mks .session-name.vim
এটি খুলতে (একই ডিরেক্টরি থেকে):
vim -S .session-name.vim
সেশন সংরক্ষণ করুন:
:mks! .session-name.vim
যেহেতু সেশনগুলি লুকানো ফাইলগুলিতে সংরক্ষিত হয় সেগুলি দেখার জন্য ভুলবেন না -a
ls -a
নীচে একমাত্র কনফ। এটা সত্যিই আমার জন্য কাজ করেছে। আমি এটি এখান থেকে নিয়ে এসেছি যেখানে আপনি আরও একটি সম্পূর্ণ / জটিল সংস্করণ নিতে পারেন।
set viewoptions+=cursor,folds,slash,unix
set viewoptions-=options
augroup vimrc
autocmd BufWritePost *
\ if expand('%') != '' && &buftype !~ 'nofile'
\| mkview
\| endif
autocmd BufRead *
\ if expand('%') != '' && &buftype !~ 'nofile'
\| silent loadview
\| endif
augroup END
একাধিক সেশন পরিচালনার জন্য (প্রতিটি ডিরেক্টরি / রেপো ভিত্তিতে), আমি সম্প্রতি ভিআইএম-সেশন প্লাগইন থেকে ভিআইএম-ওয়ার্কস্পেসে স্যুইচ করেছি । এটির সেশন ম্যানেজমেন্ট তুলনামূলক সহজ এবং বেশ ভাল কাজ করে।
man
পৃষ্ঠার চেয়ে প্রশ্নটি (বৃহত ফন্ট, দুর্দান্ত ফর্ম্যাটিং সহ ...) খুঁজে পেতে আরও স্বাচ্ছন্দ্য বোধ করছে