ডিফল্টরূপে, vim
আমার প্রকল্প ডিরেক্টরিতে ফাইলগুলি অদলবদল করে এবং ক্র্যাশ করলে এটি ব্যাকআপ ফাইল ছেড়ে দেয়।
আমি কি এটি প্রতিরোধ করতে পারি? বা আমার সমস্ত প্রকল্পের .VCSignore
ফাইল আপডেট করা দরকার ?
ডিফল্টরূপে, vim
আমার প্রকল্প ডিরেক্টরিতে ফাইলগুলি অদলবদল করে এবং ক্র্যাশ করলে এটি ব্যাকআপ ফাইল ছেড়ে দেয়।
আমি কি এটি প্রতিরোধ করতে পারি? বা আমার সমস্ত প্রকল্পের .VCSignore
ফাইল আপডেট করা দরকার ?
উত্তর:
ডিফল্টরূপে, ভিম ব্যাকআপ ফাইলগুলি পিছনে ছেড়ে যায় না। এগুলি কেবলমাত্র ক্ষণস্থায়ী ফাইল যা ভিম ডিস্কে বাফার সংরক্ষণের সময় উপস্থিত রয়েছে। :help backup-table
এই আচরণে বর্ণিত হিসাবে 'backup'
এবং 'writebackup'
বিকল্পগুলির দ্বারা নিয়ন্ত্রণ করা যেতে পারে :
'backup' 'writebackup' action ~
off off no backup made
off on backup current file, deleted afterwards (default)
on off delete old backup, backup current file
on on delete old backup, backup current file
অদলবদল ফাইল হিসাবে, এটি একটি ডেডিকেটেড ডিরেক্টরিতে সংগ্রহ করা কার্যকর হতে পারে। এটি 'directory'
বিকল্পের সাহায্যে করা যেতে পারে । উদাহরণ স্বরূপ
:set directory^=$HOME/.vim/tmp//
$HOME/.vim/tmp
অদলবদল ফাইল তৈরি করার সময় Vim চেষ্টা করবে এমন ডিরেক্টরিগুলির তালিকার শীর্ষে যোগ করবে । চিহ্ন //
তেজ ফাইল তাই বিভিন্ন ডিরেক্টরি থেকে একই নামের ফাইল দুর্ঘটনায় নয় সমগ্র পথ নাম এনকোড করে তোলে।
ক্যাভেট : স্বাপের ফাইলগুলি বিভিন্ন স্থানে সংরক্ষণ করা হয়েছে বলে একাধিক ব্যবহারকারী একই ফাইল সম্পাদনা করার চেষ্টা করছেন কিনা তা কার্যকরভাবে ভিমের নজরে আসার ক্ষমতাটি অক্ষম করে।
নীচের স্নিপেটটি ( টিপোপের ভিআমসিআরসি থেকে অভিযোজিত ) কোনও বাফারের পরিবর্তনের সময়ও অদলবদলটিকে অক্ষম করে দেবে, আপনার যখন একগুচ্ছ ফাইল খোলা থাকে তখন ভিএম / আপনার কম্পিউটার ক্র্যাশ হয়ে যায়, তবে পিছনে থাকা অদলবদল ফাইলগুলি কেবল তখনই থাকবে পরিবর্তিত ফাইলের জন্য।
autocmd CursorHold,BufWritePost,BufReadPost,BufLeave *
\ if isdirectory(expand("<amatch>:h")) | let &swapfile = &modified | endif
ক্যাভেট : যেহেতু সোফার ফাইলটি কেবল তখনই উপস্থিত থাকে যখন বাফারটি সংশোধন করা হয়, এটি সেটিংসের মতো একই প্রভাব ফেলে 'directory'
। যদি বাফারটি অপরিবর্তিত থাকে, তবে অন্য কোনও ভিম বিজ্ঞপ্তি ছাড়াই এটি সম্পাদনা শুরু করতে পারেন। প্রথমটি যদি আরও পরিবর্তন আনার আগে দ্বিতীয় ভিম সংরক্ষণ করে, তবে ব্যবহারকারী সেভ করার চেষ্টা না করে বা কোনও কিছু ফাইল পরিবর্তন করে কিনা তা পরীক্ষা করতে ভিমকে ট্রিগার না করা অবধি ততক্ষণ তাদের লক্ষ্য করা যাবে না।
আমি .vimrc
শেয়ার্ড সার্ভার সহ একাধিক মেশিনে আমার ব্যবহার করি । আমি অগত্যা চাই না যে আমি যে ফাইলগুলিতে কাজ করছি সেগুলি লোকেরা দেখতে পাবে এবং আমি আমার হোম ডিরেক্টরিটি অপেক্ষাকৃত পরিষ্কার রাখতে চাই। সুতরাং এটি আমার সমাধান যা লিনাক্স এবং ম্যাক ওএস এক্সে ঠিক কাজ করবে।
" Sets central temp file location, to prevent local default behavior.
if isdirectory($HOME . '/.vim/.tmp') == 0
:silent !mkdir -m 700 -p ~/.vim/.tmp > /dev/null 2>&1
endif
set backupdir=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
set directory=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
মনে রাখবেন যে এটি ইতিমধ্যে বিদ্যমান না থাকলে এটির .tmp
অধীন একটি ডিরেক্টরি তৈরি করবে ~/.vim
। এটি আপনার অদলবদল ফাইলগুলির নতুন বাড়ি হবে। পূর্বাবস্থায় ফেরা ফাইলগুলির জন্য আমার মধ্যেও নিম্নলিখিতগুলি রয়েছে .vimrc
(যা বেশ মিল)
if exists("+undofile")
" undofile -- This allows you to use undos after exiting and
" restarting. NOTE: only present in 7.3+
" :help undo-persistence
if isdirectory( $HOME . '/.vim/.undo' ) == 0
:silent !mkdir -m 700 -p ~/.vim/.undo > /dev/null 2>&1
endif
set undodir=~/.vim/.undo
set undofile
endif
আমি আমার ভিএমআরসি-তে এটি করি:
fun! MkdirIfNeeded(dir, flags, permissions)
if !isdirectory(a:dir)
call mkdir(a:dir, a:flags, a:permissions)
endif
endfun
" Set (& create if needed) a temp directory to keep backup & swap files
if has('win32')
let whoami = substitute(system("whoami /LOGONID"), '\n', '', '')
let tmpdir = 'C:/tmp/vim_' . whoami
else
let whoami = substitute(system("whoami"), '\n', '', '')
let tmpdir = '/var/tmp/vim_' . whoami
endif
call MkdirIfNeeded(tmpdir, 'p', 0700)
let &backupdir = tmpdir
let &dir = tmpdir
let &undodir = tmpdir
এটি /var/tmp/vim_<username>
সমস্ত ভিএম-সম্পর্কিত ফাইলগুলি সঞ্চয় করতে এবং এটি ব্যবহার করবে । আপনার প্রকল্প ডিরেক্টরি পরিষ্কার রাখা।
ব্যবহার whoami
তোলে নিশ্চিত করুন যে আপনি (ব্যবহারকারী & রুট জন্য অর্থাত।) বিশ্বব্যাপী vimrc ব্যবহার করতে পারেন যদিও পৃথক ডিরেক্টরি ব্যবহার করা; আপনার যদি এটির প্রয়োজন না হয়, আপনি দ্রুত প্রারম্ভের জন্য একটি হার্ড কোডড ডিরেক্টরি দিয়ে এটি প্রতিস্থাপন করতে পারেন। আপনি ~/.vim/
ডিরেক্টরিটিও ব্যবহার করতে পারেন তবে আমি ব্যবহার করতে পছন্দ করি /var/tmp
কারণ এটি সাধারণত একটি পৃথক ফাইল সিস্টেম।
আমি ব্যবহার করি /var/tmp
কারণ /tmp
প্রায়শই রিবুটে সাফ হয়ে যায়। আপনি সম্ভবত এই ডিরেক্টরিটি বিশ্ব-রচনার জন্য চান না, কারণ আপনি যখন ফাইল খুলবেন তখন লোকেরা সম্ভাব্য ক্ষতিকারক জিনিসগুলি করার জন্য সেখানে ফাইল স্থাপন করতে পারে।
adduser
বা ব্যবহারকারী তৈরির জন্য যা ব্যবহার করছেন তা যুক্ত করতে চান। যাই হোক না কেন, বেশিরভাগ লোকেরা নির্ভরযোগ্য মেশিনে ভিম ব্যবহার করেন (তবে আপনার মন্তব্যটি ভাল।
$HOME
অন্য কোথাও রাখছেন না কেন তা নিশ্চিত নন Not
/var/
একটি ভিন্ন ফাইল সিস্টেম। তত্ত্ব, যে এটা লিখেছেনঃ অনেকটা প্রতিরোধ করবে /
, /usr
অথবা /home
, কম ফ্র্যাগমেন্টেশন & একটি ক্র্যাশ ক্ষেত্রে ফাইল দুর্নীতির ঝুঁকি নেতৃস্থানীয় ... এই এছাড়াও হল কেন মেলবক্সগুলি এবং স্টাফ উপর /var
ডিফল্টরূপে, এবং না
/var/tmp
সর্বদা বিশ্ব লিখনযোগ্য - এটি একটি সিস্টেম অস্থায়ী ডিরেক্টরি। (আচ্ছা, আপনি এটিকে না হয়ে পরিবর্তন করতে পারেন, তবে ইউনিক্সের মতো সিস্টেমগুলি সেগুলি ভেঙে যাওয়ার পরে আপনাকে টুকরো টুকরো রাখতে দিতে খুশি) that's সিস্টেমে আপনার যদি অন্য কোনও ব্যবহারকারী থাকে তবে সে/var/tmp/vim_«your_username»
তার পছন্দসই অনুমতি নিয়ে তৈরি করতে পারে । এবং তারপরে এটি আপনার গুরুত্বপূর্ণ ফাইলগুলিতে সিমলিংকগুলি দিয়ে পূরণ করুন, যা সম্ভবত ভিএম টেম্পাইলগুলি দ্বারা ধ্বংস হয়ে যাবে।