গিটের মধ্যে কিছু ফাইল কমিট করার চেষ্টা করে আমি 'পেছনের শ্বেতস্থান' ত্রুটি পাচ্ছি।
পাইথন ফাইলগুলি সংরক্ষণ করার আগে আমি এই পেছনের সাদা স্থানগুলি স্বয়ংক্রিয়ভাবে সরিয়ে দিতে চাই।
এটি করার জন্য আপনি কি ভিআইএম কনফিগার করতে পারেন? যদি তাই হয়, কিভাবে?
গিটের মধ্যে কিছু ফাইল কমিট করার চেষ্টা করে আমি 'পেছনের শ্বেতস্থান' ত্রুটি পাচ্ছি।
পাইথন ফাইলগুলি সংরক্ষণ করার আগে আমি এই পেছনের সাদা স্থানগুলি স্বয়ংক্রিয়ভাবে সরিয়ে দিতে চাই।
এটি করার জন্য আপনি কি ভিআইএম কনফিগার করতে পারেন? যদি তাই হয়, কিভাবে?
উত্তর:
আমি উত্তর এখানে খুঁজে পেয়েছি ।
আমার .vimrc ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করা কৌশলটি করেছে।
autocmd BufWritePre *.py :%s/\s\+$//e
e
উপরের প্লাস সংরক্ষণ কার্সার অবস্থানের সংকলন:
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
keepp %s/\s\+$//e
call cursor(l, c)
endfun
autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
আপনি যদি কোনও ফাইলের সংরক্ষণে এটি প্রয়োগ করতে চান তবে দ্বিতীয়টি ছেড়ে যান autocmd
এবং একটি ওয়াইল্ডকার্ড ব্যবহার করুন *
:
autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
autocmd FileType c,cpp,java,php,ruby,python
অংশে প্রয়োগ করার জন্য অংশটি সরিয়েছি ।
<buffer>
সঙ্গে *
যদি আপনি সেই সমস্ত ফাইলে কাজ করার জন্য এটি করতে চান
keepp
keepp %s/\s\+$//e
আমারও সাধারণত:
match Todo /\s\+$/
আমার .vimrc
ফাইলে, যাতে লাইন শ্বেত স্পেসের শেষটি হিলাইট হয়।
করণীয় একটি বাক্য গঠন hilighting হচ্ছে গ্রুপ-নাম যে ভালো কিওয়ার্ড hilighting জন্য ব্যবহার করা হয় TODO
, FIXME
বা XXX
। এটিতে বিরক্তিকরভাবে কুৎসিত হলুদ বর্ণের ব্যাকগ্রাউন্ডের রঙ রয়েছে এবং আমি আপনার কোডটিতে যা চাই না তা হাইলাইট করা সবচেয়ে ভাল :-)
:hi Todo
। তাই আমি অনুভূত :hi <Tab>
এবং :help hi
। আমি বিবেচনা করেছি Cursor
এবং Error
, তবে আমি মনে করি চেষ্টা করব match VisualNOS /\s\+$/
। আমি autocmd
এখানে অন্যান্য উত্তর থেকে কিছু গুলি এর সাথে এটি একত্রিত করতে পারি ।
আমি উভয় বিদ্যমান ট্রেলিং হোয়াইটস্পেস হাইলাইট করি এবং ট্রেলিং হোয়াইটস্পেস স্ট্রিপও করি।
আমি শেষে আমার সাদা স্থান প্রদর্শনের জন্য আমার সম্পাদক (ভিএম) কনফিগার করেছি, যেমন eg
আমার .vimrc এর নীচে এটি সহ:
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
এবং আমি ফাইলগুলি সেভ করার সময় এটি থেকে 'অটো-স্ট্রিপ' করি, আমার ক্ষেত্রে রুবি ফাইলের জন্য * .rb, আবার আমার ~ / .vimrc এ
function! TrimWhiteSpace()
%s/\s\+$//e
endfunction
autocmd BufWritePre *.rb :call TrimWhiteSpace()
Http://blog.kamil.dworakowski.name/2009/09/unobtrusive-hightlight-of-trailing.html থেকে অনুলিপি এবং আটকানো হয়েছে (লিঙ্কটি আর কাজ করে না, তবে আপনার যে বিটটি প্রয়োজন সেটি নীচে রয়েছে)
"লাইনের শেষে আপনার টাইপ করা প্রতিটি স্থান হাইলাইট না করার সুবিধা রয়েছে, কেবলমাত্র আপনি যখন ফাইল খুলবেন বা সন্নিবেশ মোডটি ছেড়ে যাবেন তখন খুব ঝরঝরে"।
highlight ExtraWhitespace ctermbg=red guibg=red
au ColorScheme * highlight ExtraWhitespace guibg=red
au BufEnter * match ExtraWhitespace /\s\+$/
au InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
au InsertLeave * match ExtraWhiteSpace /\s\+$/
আমি ভিআইএম উইকিয়ায় একটি মন্তব্যে এই সমাধানটি দেখেছি - অযাচিত স্থানগুলি সরান
আমি সত্যিই এটি পছন্দ করেছি. .
অযাচিত সাদা জায়গাগুলিতে একটি যুক্ত করে।
.vimrc
" Removes trailing spaces
function TrimWhiteSpace()
%s/\s*$//
''
endfunction
set list listchars=trail:.,extends:>
autocmd FileWritePre * call TrimWhiteSpace()
autocmd FileAppendPre * call TrimWhiteSpace()
autocmd FilterWritePre * call TrimWhiteSpace()
autocmd BufWritePre * call TrimWhiteSpace()
এইভাবে আমি এটি করছি। টিবিএইচ থেকে আমি এটি কোথায় চুরি করেছি তা মনে করতে পারছি না।
autocmd BufWritePre * :call <SID>StripWhite()
fun! <SID>StripWhite()
%s/[ \t]\+$//ge
%s!^\( \+\)\t!\=StrRepeat("\t", 1 + strlen(submatch(1)) / 8)!ge
endfun
%s
বিশ্বব্যাপী (ছ) পতাকাটি EOL :-) এ স্থানের মতোই অকেজো
এমন একটি সমাধান যা কেবল ফাইল থেকে স্বেচ্ছাসেবী অনুসরণ করে সমস্ত পরিস্থিতিতে গ্রহণযোগ্য নয়। এটি এমন একটি প্রকল্পে কাজ করবে যার শুরু থেকেই এই নীতি ছিল এবং তাই এরকম কোনও সাদা জায়গা নেই যা আপনি নিজের আসন্ন প্রতিশ্রুতিতে নিজেকে যুক্ত করেন নি।
মনে করুন যে আপনি আপনার কাজের সাথে অপ্রাসঙ্গিক এমন পরিবর্তনগুলি মুক্ত রাখতে আপনার সম্পাদনা করেন না এমন লাইনে বিদ্যমান শ্বেত স্পেসকে প্রভাবিত না করেই কেবল সাদা বর্ণের স্থান অনুসরণের নতুন উদাহরণ যুক্ত না করার ইচ্ছা প্রকাশ করেছেন।
সেক্ষেত্রে গিট সহ আপনি এই জাতীয় স্ক্রিপ্ট ব্যবহার করতে পারেন:
#!/bin/sh
set -e # bail on errors
git stash save commit-cleanup
git stash show -p | sed '/^\+/s/ *$//' | git apply
git stash drop
এটি বলার জন্য, আমরা পরিবর্তনগুলি স্ট্যাশ করি এবং তারপরে +
শুকনো স্পেসটি অপসারণ করতে ডিফের সমস্ত লাইন ফিল্টার করি কারণ আমরা পরিবর্তনটি কার্যকরী ডিরেক্টরিতে পুনরায় প্রয়োগ করি। যদি এই কমান্ড পাইপটি সফল হয় তবে আমরা স্ট্যাশটিকে ফেলে দিই।
.vimrc
ফাইলটিতে ব্যবহৃত হওয়ার সাথে সাথে এখানে অন্য পদ্ধতির কোনওভাবেই ম্যাকভিমে আমার জন্য কাজ করেনি didn't সুতরাং এখানে একটি যা ট্রেলিং স্পেসগুলি হাইলাইট করে এবং হাইলাইট করে:
set encoding=utf-8
set listchars=trail:·
set list
set listchars=trail:·
বলেন: E474: Invalid argument: listchars=trail:·
। আপনি আপনার উদাহরণ যাচাই করতে পারেন?
যদি আপনি হোয়াইটস্পেস ট্রিম করেন তবে আপনার কেবল এটি ইতিমধ্যে পরিষ্কার থাকা ফাইলগুলিতে করা উচিত । "যখন রোমে...". কোডবেজগুলিতে কাজ করার সময় এটি উত্তম শিষ্টাচার যেখানে প্রফুল্ল পরিবর্তনগুলি অপ্রয়োজনীয়।
এই ফাংশনটি পূর্ববর্তী শুকনো স্থানটি সনাক্ত করে এবং যদি এটি ইতিমধ্যে পরিষ্কার ছিল তবেই ট্রিমিং চালু করে।
এই ধারণার কৃতিত্ব এখানে একটি মন্তব্যের রত্নের কাছে যায়: https://github.com/atom/whitespace/issues/10 (এখন পর্যন্ত দীর্ঘতম বাগের টিকিট মন্তব্য স্ট্রিম)
autocmd BufNewFile,BufRead *.test call KarlDetectWhitespace()
fun! KarlDetectWhitespace()
python << endpython
import vim
nr_unclean = 0
for line in vim.current.buffer:
if line.rstrip() != line:
nr_unclean += 1
print "Unclean Lines: %d" % nr_unclean
print "Name: %s" % vim.current.buffer.name
cmd = "autocmd BufWritePre <buffer> call KarlStripTrailingWhitespace()"
if nr_unclean == 0:
print "Enabling Whitespace Trimming on Save"
vim.command(cmd)
else:
print "Whitespace Trimming Disabled"
endpython
endfun
fun! KarlStripTrailingWhitespace()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
let _s=@/
নিবন্ধটিও রাখতে পারেন এবং শেষে এটি পুনরুদ্ধার করতে পারেন - যাক @ / = _ s` `এই ক্ষেত্রে আমরা ব্ল্যাকহোল রেজিস্টারটি ব্যবহার করছি