কীভাবে আমি ফাইল টাইপের উপর ভিত্তি করে ডিফল্ট ইন্ডেন্টেশন পরিবর্তন করতে পারি?


34

আমি যে ধরণের ফাইলের উপর কাজ করছি তার উপর ভিত্তি করে আমি আলাদা इंडেন্টেশন পেতে চাই। উদাহরণস্বরূপ, একটি .cফাইলের উপর কাজ করাতে আমি চাই আমার ইনডেন্টেশনটি 4 স্পেসে থাকতে হবে। ইন .htmlফাইল আমি (আছে) এর ট্যাব সঙ্গে কাজ চাই।

আমি কীভাবে এটি অর্জন করব?

উত্তর:


25

সর্বোত্তম পদ্ধতি হ'ল সেই সেটিংসটি .োকাতে ~/.vim/after/ftplugin/<filetype>.vim

এইচটিএমএলের জন্য (ধরে নিচ্ছেন যে আপনি 4 টি অক্ষর-বিস্তৃত ট্যাবগুলি চান):

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

Ftplugin ব্যবহার করা অটোকমন্ড ব্যবহার করা বেশি পছন্দ কারণ ভিম ইতিমধ্যে ফাইল টাইপ চেক নিজেই করে এবং ইতিমধ্যে পর্যাপ্ত ftplugin উত্স করার চেষ্টা করে যাতে আরও চেক জোর করার এবং চাকাটিকে পুনরায় প্রয়োগ করার কোনও কারণ নেই।

- সম্পাদনা -

filetype plugin onআপনার নিজের vimrcযা আছে তা ধরে নিলে - যা আপনার করা উচিত - ভিম আপনার সম্পাদনা করা ফাইলগুলির ফাইল টাইপ সনাক্ত করার চেষ্টা করবে এবং একবার সঠিক ফাইল টাইপটি খুঁজে পেয়ে বাফারের জন্য সেট হয়ে গেলে, এই স্ট্যান্ডার্ড লোকেশনগুলিতে সংশ্লিষ্ট ftplugin উত্স করার চেষ্টা করুন:

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

এর সবগুলি স্বয়ংক্রিয়ভাবে ঘটে তাই আপনার ফাইল টাইপটি ভিমের দ্বারা স্বীকৃত হলে কোনও ফাইল টাইপ সনাক্তকরণ যুক্তি যুক্ত করার কোনও কারণ নেই: কেবলমাত্র আপনার সেটিংসটি ডান এফটিপ্লাগিনে যুক্ত করুন এবং আপনি ভাল are


আমার কি কোনওভাবে ftplugin সক্রিয় করতে হবে বা ফাইল (গুলি) তৈরি করে তা স্বয়ংক্রিয়ভাবে সক্রিয় করা হবে?
ডেল্টলিমা

filetype plugin indent onআপনার মধ্যে আছে তা নিশ্চিত করুন vimrc
রোমেনেল

1
@ ডেল্টলিমা ভিমের একটি পথ রয়েছে যা সেটিংস যাচাই করতে যায়। যতক্ষণ filetype plugin onসেট করা থাকে ততক্ষণ , ভিমের পথে তার পথে থাকা ফাইলগুলি ftplugin/<filetype>.vimএবং after/ftplugin/<filetype>/vimফাইলগুলি অন্তর্ভুক্ত থাকে ।
ডেভিড্লোরিডুদা

@ ডেল্টলিমা, দয়া করে আমার সম্পাদনা দেখুন।
রোমেনেল

14

আপনি নিজের অটোক্যামেন্ড দিয়ে এটি করতে পারেন .vimrc

উদাহরণস্বরূপ, আমার একটি ফাংশন রয়েছে html_like_modeযা এইচটিএমএল ফাইল সম্পাদনা করার জন্য বিভিন্ন জিনিস সেট আপ করে। আমার মধ্যে .vimrc, আমি:

au BufNewFile,BufRead *.html call s:html_like_mode()

ফাইল এক্সটেনশন বন্ধ যে কী। আপনি যদি এটি সক্ষম করে থাকেন তবে আপনি ফাইল টাইপের কীও করতে পারেন:

au FileType perl setlocal equalprg=perltidy

আপনি দেখতে পাচ্ছেন, এটি কোনও আদেশ দিতে পারে। সুতরাং আপনি সহজেই setlocal shiftwidth 4আপনার * .c ফাইলগুলির জন্য একটি করতে পারেন ।


9

augroupআপনাকে সম্পর্কিত অটোমোন্ডগুলিকে নামযুক্ত গোষ্ঠীতে গোষ্ঠী তৈরি করতে দেয়। ( স্বতঃসমানু গোষ্ঠীগুলি সম্পর্কে জানতে এখানে দেখুন )) আমরা augroupঅটোকমন্ডগুলি এমনভাবে যুক্ত করতে ব্যবহার করি যা প্রতিবারই উত্সটি তৈরি করার ~/.vimrcসময় কোনও সদৃশ যুক্ত হয় না।

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
এটি কী করে এবং কীভাবে এটি সেট আপ করবেন তা যদি আপনি ব্যাখ্যা করেন তবে সকলেই জানেন না;)
শেঠ

3

ব্যবহৃত অটোকিমডি এবং ফাইল টাইপ

autocmd FileType html setlocal shiftwidth=4 tabstop=4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.