মেকফিল এবং সাধারণ কোড ফাইল উভয় সম্পাদনা করতে কীভাবে ভিএম সেটআপ করবেন?


22

আমি ম্যাক ওএসএক্স 10.7.5 ব্যবহার করছি, .vimrc এর বিষয়বস্তু নীচে রয়েছে:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set shiftround  
set smarttab    
set autoindent  
set copyindent  

autocmd FileType make setlocal noexpandtab

আমি যা করার চেষ্টা করছি তা যখন আমি .js, .html এর মতো সাধারণ ফাইলগুলি সম্পাদনা করি তখন আমি চাই আমার ট্যাবগুলি একটি সাধারণ ট্যাবের পরিবর্তে 4 টি ফাঁকা স্পেস দিয়ে ইন্টেন্ট করা থাকে।

তবে আমি যখন মেকফিল সম্পাদনা করছি তখন ইন্ডেন্টেশনের জন্য 4 টি ফাঁকা জায়গার পরিবর্তে আমার এটি সাধারণ ট্যাব হওয়া দরকার।

আমি ভেবেছিলাম .vimrc এ উপরের সেটআপটি আমাকে তা দিতে চলেছে, তবে আমার জন্য এমনভাবে কাজ করছে না যখন আমি মেকফিল সম্পাদনা করছি তখনও আমি ইনডেন্টেশনের জন্য 4 টি ফাঁকা স্থান পাচ্ছি।

আমি এখানে ভুল করছি তা নিশ্চিত না?

উত্তর:


26

এটি আমার একটি বিভাগ .vimrc:

" enable filetype detection:
filetype on
filetype plugin on
filetype indent on " file type based indentation

" recognize anything in my .Postponed directory as a news article, and anything
" at all with a .txt extension as being human-language text [this clobbers the
" `help' filetype, but that doesn't seem to prevent help from working
" properly]:
augroup filetype
  autocmd BufNewFile,BufRead */.Postponed/* set filetype=mail
  autocmd BufNewFile,BufRead *.txt set filetype=human
augroup END

autocmd FileType mail set formatoptions+=t textwidth=72 " enable wrapping in mail
autocmd FileType human set formatoptions-=t textwidth=0 " disable wrapping in txt

" for C-like  programming where comments have explicit end
" characters, if starting a new line in the middle of a comment automatically
" insert the comment leader characters:
autocmd FileType c,cpp,java set formatoptions+=ro
autocmd FileType c set omnifunc=ccomplete#Complete

" fixed indentation should be OK for XML and CSS. People have fast internet
" anyway. Indentation set to 2.
autocmd FileType html,xhtml,css,xml,xslt set shiftwidth=2 softtabstop=2

" two space indentation for some files
autocmd FileType vim,lua,nginx set shiftwidth=2 softtabstop=2

" for CSS, also have things in braces indented:
autocmd FileType css set omnifunc=csscomplete#CompleteCSS

" add completion for xHTML
autocmd FileType xhtml,html set omnifunc=htmlcomplete#CompleteTags

" add completion for XML
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

" in makefiles, don't expand tabs to spaces, since actual tab characters are
" needed, and have indentation at 8 chars to be sure that all indents are tabs
" (despite the mappings later):
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

" ensure normal tabs in assembly files
" and set to NASM syntax highlighting
autocmd FileType asm set noexpandtab shiftwidth=8 softtabstop=0 syntax=nasm

অধ্যায় স্বশাসিত হওয়া উচিত, কিন্তু আমি আপনাকে পরামর্শ দিচ্ছি আপনি তেজ সাহায্যের পড়া filetypeএবং autocmd

আপনার কাছে সবচেয়ে প্রাসঙ্গিক লাইনটি সম্ভবত এটিই একটি:

autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

যদিও ফাইল টাইপ সনাক্তকরণ চালু আছে তা নিশ্চিত করুন।


চমৎকার স্বতঃসমানিকার জন্য ধন্যবাদ! আমি আপনার কাছ থেকে শেখার সময় এই টিউটোরিয়ালটিতে লক্ষ্য করেছি .vimrcযে আপনি যদি আপনার বিভাগগুলিতে আবদ্ধ autocmdনা করেন augroup, ভিম এগুলি পড়বে এবং সেগুলি নকল করবে। এটা কি সঠিক?
জোশুয়া ডিটওয়েলার

6

অটোকিম্ডের সাহায্যে এটি না করে আপনি প্রতিটি ফাইল টাইপের জন্য নিজস্ব ব্যবহারকারী ফাইল টাইপ প্লাগইন তৈরি করতে এবং এটিতে রাখতে পারেন ~/.vim/ftplugin/<filetype>.vim, <filetype>আপনার আসল ফাইল টাইপটি কোথায় । উদাহরণ স্বরূপ:

mkdir -p ~/.vim/ftplugin
echo "setlocal noexpandtab" > ~/.vim/ftplugin/make.vim

~/.vimrcনিম্নলিখিত কমান্ডটি দিয়ে আপনার কাছে ফাইল টাইপ প্লাগইন সক্ষম করা আছে তা নিশ্চিত করতে হবে :

filetype plugin on

আপনি যদি আপনার .vimrc এবং .vim ডিরেক্টরিগুলি পরিষ্কার রাখতে চান তবে এই উত্তরটি আরও অর্থবোধ করে।
ফ্লোবি

0

সর্বদা ট্যাবগুলি প্রসারিত করতে ভিএমকে কনফিগার করা সহজ, যা মেকফাইলগুলি বাদে সমস্ত ফাইলের জন্য চেয়েছিল। মেকফাইলগুলিতে আপনি যে কোনও জায়গায় ট্যাব সন্নিবেশ করতে ব্যবহার করতে পারেন। এটি প্রসারিত হবে না।

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