আমি কীভাবে ভিমকে অনেক বেশি ফাইল (যেমন অদলবদল, ব্যাকআপ, পূর্বাবস্থা রেখে) আটকাতে পারি?


13

ডিফল্টরূপে, vimআমার প্রকল্প ডিরেক্টরিতে ফাইলগুলি অদলবদল করে এবং ক্র্যাশ করলে এটি ব্যাকআপ ফাইল ছেড়ে দেয়।

আমি কি এটি প্রতিরোধ করতে পারি? বা আমার সমস্ত প্রকল্পের .VCSignoreফাইল আপডেট করা দরকার ?

উত্তর:


16

ব্যাকআপ ফাইল

ডিফল্টরূপে, ভিম ব্যাকআপ ফাইলগুলি পিছনে ছেড়ে যায় না। এগুলি কেবলমাত্র ক্ষণস্থায়ী ফাইল যা ভিম ডিস্কে বাফার সংরক্ষণের সময় উপস্থিত রয়েছে। :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'। যদি বাফারটি অপরিবর্তিত থাকে, তবে অন্য কোনও ভিম ​​বিজ্ঞপ্তি ছাড়াই এটি সম্পাদনা শুরু করতে পারেন। প্রথমটি যদি আরও পরিবর্তন আনার আগে দ্বিতীয় ভিম সংরক্ষণ করে, তবে ব্যবহারকারী সেভ করার চেষ্টা না করে বা কোনও কিছু ফাইল পরিবর্তন করে কিনা তা পরীক্ষা করতে ভিমকে ট্রিগার না করা অবধি ততক্ষণ তাদের লক্ষ্য করা যাবে না।


5

আমি .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

1

আমি আমার ভিএমআরসি-তে এটি করি:

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প্রায়শই রিবুটে সাফ হয়ে যায়। আপনি সম্ভবত এই ডিরেক্টরিটি বিশ্ব-রচনার জন্য চান না, কারণ আপনি যখন ফাইল খুলবেন তখন লোকেরা সম্ভাব্য ক্ষতিকারক জিনিসগুলি করার জন্য সেখানে ফাইল স্থাপন করতে পারে।


1
/var/tmpসর্বদা বিশ্ব লিখনযোগ্য - এটি একটি সিস্টেম অস্থায়ী ডিরেক্টরি। (আচ্ছা, আপনি এটিকে না হয়ে পরিবর্তন করতে পারেন, তবে ইউনিক্সের মতো সিস্টেমগুলি সেগুলি ভেঙে যাওয়ার পরে আপনাকে টুকরো টুকরো রাখতে দিতে খুশি) that's সিস্টেমে আপনার যদি অন্য কোনও ব্যবহারকারী থাকে তবে সে /var/tmp/vim_«your_username»তার পছন্দসই অনুমতি নিয়ে তৈরি করতে পারে । এবং তারপরে এটি আপনার গুরুত্বপূর্ণ ফাইলগুলিতে সিমলিংকগুলি দিয়ে পূরণ করুন, যা সম্ভবত ভিএম টেম্পাইলগুলি দ্বারা ধ্বংস হয়ে যাবে।
ডারোবার্ট

@डरবার্ট কেবলমাত্র যদি এটির অস্তিত্ব না থাকে। আপনি যদি এই সিস্টেম-ব্যাপী এবং প্রচুর ব্যবহারকারী ব্যবহার করেন তবে আপনি সম্ভবত এই ডিরেক্টরিটি তৈরি করতে adduserবা ব্যবহারকারী তৈরির জন্য যা ব্যবহার করছেন তা যুক্ত করতে চান। যাই হোক না কেন, বেশিরভাগ লোকেরা নির্ভরযোগ্য মেশিনে ভিম ব্যবহার করেন (তবে আপনার মন্তব্যটি ভাল।
মার্টিন টর্নোইজ

সঠিক, শুধুমাত্র যদি এটি বিদ্যমান না। কোনটি, অস্থায়ী ডিরেক্টরিতে থাকা অবস্থায় সেই টেম্পাইলগুলি পরিষ্কার করা হয় তার উপর ভিত্তি করে অনাকাঙ্ক্ষিতভাবে ঘটে। আপনি কেবল এটি $HOMEঅন্য কোথাও রাখছেন না কেন তা নিশ্চিত নন Not
ডারোবার্ট

@ডারবার্ট ওয়েল, /var/একটি ভিন্ন ফাইল সিস্টেম। তত্ত্ব, যে এটা লিখেছেনঃ অনেকটা প্রতিরোধ করবে /, /usrঅথবা /home, কম ফ্র্যাগমেন্টেশন & একটি ক্র্যাশ ক্ষেত্রে ফাইল দুর্নীতির ঝুঁকি নেতৃস্থানীয় ... এই এছাড়াও হল কেন মেলবক্সগুলি এবং স্টাফ উপর /varডিফল্টরূপে, এবং না
হোমডির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.