কিভাবে আমি করতে পারি দ্রুত ২ / উদ্ধতি শব্দ এবং পরিবর্তন উদ্ধৃত (থেকে যেমন '
করা "
) তেজ আছে? আমি আশেপাশের.ভিম প্লাগইন সম্পর্কে জানি তবে আমি কেবল ভিম ব্যবহার করতে চাই।
কিভাবে আমি করতে পারি দ্রুত ২ / উদ্ধতি শব্দ এবং পরিবর্তন উদ্ধৃত (থেকে যেমন '
করা "
) তেজ আছে? আমি আশেপাশের.ভিম প্লাগইন সম্পর্কে জানি তবে আমি কেবল ভিম ব্যবহার করতে চাই।
উত্তর:
আশেপাশে.ভিম আপনার সহজ উত্তর হতে চলেছে। আপনি যদি সত্যই এটি ব্যবহারের বিরুদ্ধে স্থির হন তবে আপনি যা করতে পারেন তার কয়েকটি উদাহরণ এখানে are অগত্যা সর্বাধিক দক্ষ নয়, তবে সে কারণেই চারপাশে.ভিম লেখা হয়েছিল।
ciw'Ctrl+r"'
ciw
- কার্সার চালু থাকা শব্দটি মুছুন এবং সন্নিবেশ মোডে শেষ করুন।'
- প্রথম উদ্ধৃতি যোগ করুন।Ctrl+r"
- "
নিবন্ধের বিষয়বস্তু প্রবেশ করান , শেষ ইয়ঙ্ক / মুছুন aka'
- সমাপ্ত উদ্ধৃতি যোগ করুন।
di'hPl2x
di'
- একক উদ্ধৃতি দ্বারা আবদ্ধ শব্দটি মুছুন।hP
- কার্সারকে এক জায়গায় বামে স্থানান্তর করুন (শুরুর উদ্ধৃতিটির উপরে) এবং উদ্ধৃত পাঠ্যটি উদ্ধৃতিটির আগে রাখুন।l
- কার্সারটি এক জায়গায় ডানদিকে সরান (শুরুর উদ্ধৃতিটির শীর্ষে)।2x
- দুটি উদ্ধৃতি মুছুন।
va':s/\%V'\%V/"/g
va'
- উদ্ধৃত শব্দ এবং উদ্ধৃতিটি দৃশ্যত নির্বাচন করুন।:s/
- একটি প্রতিস্থাপন শুরু করুন।\%V'\%V
- কেবলমাত্র নির্বাচিত অঞ্চলের মধ্যে থাকা একক উদ্ধৃতিগুলির সাথে মেলে।/"/g
- এগুলিকে ডাবল কোট দিয়ে প্রতিস্থাপন করুন।ciw
এবং শুধু না cw
? আমি প্রথম বিভ্রান্তি খুঁজে পাই এবং দ্বিতীয়টি ভাল কাজ করে find
ciw
থাকুক না কেন @ কোভেরাস কাজ করে। cw
কেবলমাত্র যদি আপনার কার্সার শব্দের শুরুতে থাকে তবে কাজ করে। দেখুন :help iw
।
.
কমান্ডটি দিয়ে কাজ করে না । এটি কাজ করতে, ব্যবহার করুন ciw' Ctrl+r Ctrl+p"
। তারপরে .
নিচের শব্দের জন্য আপনি যেমন চান তেমন আচরণ করবেন: নিবন্ধের বিষয়বস্তু মনে রাখার পরিবর্তে এটি মনে রাখবে যে আপনি এখনই রেজিস্টারে যা কিছু চান তা বোঝাতে (ধরণের ব্যাখ্যা করার জন্য কঠিন, তবে যদি আপনি উভয়ই চেষ্টা করেন তবে তা স্পষ্ট হয়ে উঠবে) :-))
একক উদ্ধৃতি ব্যবহার করে একটি শব্দ উদ্ধৃত করুন
ciw'Ctrl+r"'
আমার পক্ষে এটি করা সহজ ছিল easier
ciw '' Esc P
এখানে কিছু ম্যাপিং রয়েছে যা সাহায্য করতে পারে:
:nnoremap <Leader>q" ciw""<Esc>P
:nnoremap <Leader>q' ciw''<Esc>P
:nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P
আপনি mapleader পরিবর্তনশীল পরিবর্তিত হয়নি, তাহলে এর সাথে ম্যাপিং সক্রিয় \q"
\q'
বা \qd
। তারা কার্সারের নীচে শব্দের চারপাশে ডাবল উদ্ধৃতি যুক্ত করে, কার্সারের নীচে শব্দের চারপাশে একক উদ্ধৃতি যুক্ত করে যথাক্রমে কার্সারের নীচে শব্দের চারপাশে যে কোনও উদ্ধৃতি মুছুন।
map <Leader>' gewi'<Esc>A'<Esc>
জন্য আমি আমার .vimrc
ফাইলে যুক্ত হয়ে শেষ করেছি ; যা কিছু এমএসডিএস স্ক্রিপ্টগুলিকে ব্যাশে রূপান্তর করার সময় আমাকে সহায়তা করেছিল।
:vnoremap <leader>q c""<esc>P
।
অন্যান্য কমান্ডের পাশাপাশি এটি সমস্ত শব্দ ডাবল উক্তিগুলিতে একটি লাইনে আবদ্ধ করবে (আপনার মন্তব্য অনুসারে)
:s/\(\S\+\)/"\1"/
অথবা আপনি যদি ব্যাকস্ল্যাশগুলির সংখ্যা হ্রাস করতে চান তবে আপনি \v
প্যাটার্নের শুরুতে একটি (খুব-যাদু) পরিবর্তন করতে পারেন
:s/\v(\S+)/"\1"/
:s/\v([a-Z]+)/"\1"/g
ম্যাক্রো উপায়!
টিপুন qএবং qq রেজিস্ট্রারে রেকর্ডিংয়ের জন্য (আমরা "কোট" মনে রাখার জন্য শর্টকাট হিসাবে "q" ব্যবহার করি)।
প্রেস shift+ + bবর্তমান শব্দ সামনে পদক্ষেপ কার্সার
প্রেসের iধরণ '(একক উদ্ধৃতি)
প্রেস escতারপর টিপুন eশব্দের অন্তে চলাচল
প্রেস aতারপর টিপুন 'আবার কোট দিয়ে শব্দ ঘিরা।
escস্বাভাবিক মোডে পেতে টিপুন ।
অবশেষে qএটি q
রেজিস্টার রেকর্ড করতে টিপুন ।
ব্যবহারবিধি
আপনি নিজের step 4
পছন্দ মতো কোনও কিছুতে পরিবর্তন করতে পারেন line একটি লাইন, একটি শব্দ যতক্ষণ না কোনও অক্ষর ইত্যাদি পাওয়া যায় etc}
রেকর্ডকৃত ম্যাক্রো অবিচ্ছিন্ন করুন Make
@ কিউ = ' ctrl+ r ctrl+ rকিউ' যাক
সংরক্ষণ এবং ছেড়ে দিন
আপনার ফাইলগুলি খুলুন, কিছু কথায় যান
@q
আপনি যদি এটি সঠিকভাবে করেন তবে আপনার কথায় ম্যাজিক জিনিসগুলি উপস্থিত হওয়া উচিত।
আপনি পছন্দ করেছেন এমন অন্য ম্যাক্রোগুলির জন্য আপনি এই পদক্ষেপগুলি করতে পারেন।
@q w
এবং তারপরে আপনি পরবর্তী n
শব্দগুলিকে সাথে ব্যবহার করে মুদ্রণ করতে পারেন n@j
।
একক উদ্ধৃতিতে মোড়ানো (উদাহরণস্বরূপ) ciw'<C-r>"'<esc>
কাজ করে, তবে পুনরাবৃত্তি কার্যকর হবে না। চেষ্টা করুন:
ciw'<C-r><C-o>"'<esc>
এটি "আক্ষরিক" ডিফল্ট রেজিস্ট্রারের বিষয়বস্তু রাখে। এখন আপনি .
এটিকে উদ্ধৃতিতে গুটিয়ে রাখতে যে কোনও শব্দকে চাপতে পারেন । :h[elp] i_ctrl-r
এখানে পাঠ্য অবজেক্ট সম্পর্কে আরও এবং আরও জানতে:h text-objects
সূত্র: http://vimcast.org/episodes/pasting-from-insert-mode/
ciw'<C-R><C-O>"'<Esc>
।
.
শেষ প্রকৃত কলটির সামগ্রীটি পুনরায় লিখবে ।
ভিএসকোডভিমের ব্যবহারকারীদের জন্য আপনি এটি করতে পারেন
vwS"
"
যা গুটিয়ে রাখতে চান তা দিয়ে প্রতিস্থাপন করতে পারেন।w
অন্য যে কোনও নির্বাচন অপারেটরের সাথে প্রতিস্থাপন করতে পারেনviwS'
যা শব্দটি একক উদ্ধৃতিতে আবৃত করে । এখন পর্যন্ত সবচেয়ে সহজ।
viwS"
আমি এর জন্য কোনও বিল্টিন ভিম কমান্ড জানি না, তবে r"f'r"
'আপনি' থেকে 'পরিবর্তিত হওয়া এবং r'f"r'
"আপনি যদি প্রথমে দাঁড়িয়ে থাকেন" বা "থেকে" পরিবর্তিত হয় ব্যবহার করে। কমান্ডটি r'
আপনার কার্সারের নীচে যে কোনও অক্ষরকে' এর সাথে প্রতিস্থাপন করে, এবং f"
আপনাকে পরবর্তীের দিকে নিয়ে যায় "।
'r
এবং "r
) এর পরিবর্তে , আপনি কেবল টাইপ করতে পারেন .
এবং যদি আপনি আরও উদ্ধৃতি পরিবর্তন করতে চান ;
এবং যথাক্রমে একই দিকে বা বিপরীত ,
স্থানে শেষ f/F/t/T
অনুসন্ধানটি পুনরাবৃত্তি করার সাথে সাথে আপনাকে পরবর্তী বা পূর্ববর্তী একটিতে নিয়ে যান ।
উদ্ধৃতি যোগ করা হচ্ছে
আমি এই .vimrc
:
vnoremap q <esc>:call QuickWrap("'")<cr>
vnoremap Q <esc>:call QuickWrap('"')<cr>
function! QuickWrap(wrapper)
let l:w = a:wrapper
let l:inside_or_around = (&selection == 'exclusive') ? ('i') : ('a')
normal `>
execute "normal " . inside_or_around . escape(w, '\')
normal `<
execute "normal i" . escape(w, '\')
normal `<
endfunction
সুতরাং এখন, আমি দৃষ্টিকটুভাবে আমার যা চাই ( viw
সিলেক্ট করে - সাধারণত শব্দটির অভ্যন্তরে শব্দটি নির্বাচন করি ) কোটায় নির্বাচন করি এবং Qডাবল উদ্ধৃতিতে টিপুন, বা qএকক উদ্ধৃতিতে টিপুন ।
উদ্ধৃতি মুছে ফেলা হচ্ছে
vnoremap s <esc>:call StripWrap()<cr>
function! StripWrap()
normal `>x`<x
endfunction
আমি ভিএম-টেক্সটবজ-কোটস ব্যবহার করি যাতে ভিআইএম টেক্সট অবজেক্ট হিসাবে উদ্ধৃতি হিসাবে ব্যবহার করে। এই উপায়ে আমি কি করতে পারি vaq
(চাক্ষুষরূপে নির্বাচন কোট প্রায় । এই খুঁজে বের করে নিকটতম কোট এবং চাক্ষুষরূপে তাদের নির্বাচন করে। (এই ঐচ্ছিক, আপনি শুধু ভালো কিছু করতে পারেন f"vww
)। তারপর আমি চাপুন s
করার স্ট্রিপ নির্বাচন থেকে উদ্ধৃতি।
উদ্ধৃতি পরিবর্তন
চুমু খেতে হবে। আমি উদ্ধৃতিগুলি মুছে ফেলি তারপর উদ্ধৃতি যুক্ত করুন । 1. অপসারণ একক উদ্ধৃতি: উদাহরণস্বরূপ, ডবল কোট সঙ্গে একক উদ্ধৃতি প্রতিস্থাপন করতে, আমি ধাপগুলি অনুসরণ হবে vaqs
, 2. নতুন কোট যোগ করুন: vwQ
।
আপনি যদি ভিআইএম প্লাগইন ব্যবহার করেন তবে https://github.com/tpope/vim-surround (বা ভিএসকোড ভিম প্লাগইন ব্যবহার করুন, যা ভিম-চারপাশে প্রাক ইনস্টলড সহ আসে), এটির দৃ conv় প্রত্যয়ী!
যোগ
ysiw' // surround in word `'`
ঝরা
ds' // drop surround `'`
পরিবর্তন
cs'" // change surround from `'` to `"`
এমনকি এটি এইচটিএমএল ট্যাগগুলির জন্যও কাজ করে!
cst<em> // change surround from current tag to `<em>`
আরও ভাল উদাহরণের জন্য গিথুব এ রিডমেটি দেখুন
এখানে কয়েকটি সাধারণ ম্যাপিং রয়েছে যা একটি শব্দ উদ্ধৃত করতে এবং উদ্ধৃত করতে ব্যবহৃত হতে পারে:
" 'quote' a word
nnoremap qw :silent! normal mpea'<Esc>bi'<Esc>`pl
" double "quote" a word
nnoremap qd :silent! normal mpea"<Esc>bi"<Esc>`pl
" remove quotes from a word
nnoremap wq :silent! normal mpeld bhd `ph<CR>
qw
qd
wq
ভিএসকোডের জন্য ভিআইএম এটি দুর্দান্তভাবে করে। এটা এক ভিত্তি করে এর তেজ-পারিপার্শ্বিক আপনি vscode ব্যবহার করবেন না।
কিছু উদাহরণ:
"টেস্ট" দিয়ে কোর্সের ভিতরে কার্সার দিয়ে সিএস টাইপ করুন '' পরীক্ষা 'দিয়ে শেষ করতে
পরীক্ষার সমাপ্তির জন্য "টেস্ট" কোটারের ভিতরে কার্সার সহ ds টাইপ করুন
কোটারের ভিতরে কার্সার সহ "পরীক্ষা" লিখুন সিএস "টি এবং <123> পরীক্ষা শেষ করতে 123> লিখুন enter
ওয়ার্ড টেস্ট টাইপ ysaw এ কার্সার দিয়ে পরীক্ষা করুন (পরীক্ষা) দিয়ে শেষ হবে
আমি আমার .vimrc এ nnoremap ব্যবহার করছি
একটি শব্দ উদ্ধৃত করতে:
nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`pl
উদ্ধৃতি অপসারণ করতে (পাশাপাশি ডাবল উদ্ধৃতিতেও কাজ করে):
nnoremap qs :silent! normal mpeld bhd `ph<CR>
মনে রাখার নিয়ম: 'বর্গ' = একক উদ্ধৃতি।
এ কেমন?
:%s/\'/"/g
%
, এটি কেবলমাত্র বর্তমান লাইনে কাজ করবে যদি না আপনি পুরো ফাইলটি নির্বাচন করেন
আমি একটি স্ক্রিপ্ট লিখেছিলাম যা এটি করে:
function! WrapSelect (front)
"puts characters around the selected text.
let l:front = a:front
if (a:front == '[')
let l:back = ']'
elseif (a:front == '(')
let l:back = ')'
elseif (a:front == '{')
let l:back = '}'
elseif (a:front == '<')
let l:back = '>'
elseif (a:front =~ " ")
let l:split = split(a:front)
let l:back = l:split[1]
let l:front = l:split[0]
else
let l:back = a:front
endif
"execute: concat all these strings. '.' means "concat without spaces"
"norm means "run in normal mode and also be able to use \<C-x> characters"
"gv means "get the previous visual selection back up"
"c means "cut visual selection and go to insert mode"
"\<C-R> means "insert the contents of a register. in this case, the
"default register"
execute 'norm! gvc' . l:front. "\<C-R>\"" . l:back
endfunction
vnoremap <C-l> :<C-u>call WrapSelect(input('Wrapping? Give both (space separated) or just the first one: '))<cr>
ব্যবহার করতে, কিছু হাইলাইট করুন, নিয়ন্ত্রণ টিপুন এবং তারপরে একটি অক্ষর টাইপ করুন। ফাংশনটি যদি এটির একটি চরিত্র সম্পর্কে জানে তবে এটি সঠিক সমাপ্তি চরিত্রটি সরবরাহ করবে। যদি এটি না হয় তবে এটি উভয় পক্ষের sertোকাতে একই অক্ষর ব্যবহার করবে use
আশেপাশের.ভিম কেবল এটির চেয়ে বেশি কিছু করতে পারে তবে এটি আমার প্রয়োজনের জন্য যথেষ্ট ছিল।