কীভাবে শব্দগুলিকে একটি সহজ পদ্ধতিতে (ভিআইএম এ) স্যুইচ করা যায়?


11

এটি সম্ভব ছিল কিনা তা নির্ধারণ করার জন্য আমি ভিমের পক্ষে যথেষ্ট ভাল নই (যে কারণে আমি সুপারভাইজারের কাছে এসেছি এবং ভাল না) two খুব সহজেই দুটি শব্দ বদলানোর কোনও উপায় কি ভিমে আছে?

উদাহরণস্বরূপ def function(param1, param2)এটিকে পরিবর্তন করার কোনও দ্রুত / সহজ উপায় আছে def function(param2, param1)???

উত্তর:


13

আমি মনে করি না যে আমি প্রাথমিকভাবে এটি কোথায় পেয়েছি তবে এটি আমার। / .Vimrc এ অন্তত কয়েক বছর ধরে রয়েছে:

" Swap the word the cursor is on with the next word (which can be on a
" newline, and punctuation is "skipped"):
nmap <silent> gw "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>:noh<CR>

আপনি এটি সংজ্ঞায়িত করার পরে, আপনাকে যা করতে হবে তা হ'ল আপনার কার্সারটিকে কোথাও "মোড়ক 1" এ সাধারণ মোডে রেখে টাইপ করুন: gw


4
আমার কাছে এটিও আছে, এটি উইম উইকি থেকে আসে।
রোমেনেল

5

@ হেপাটাইটের উত্তরের জন্য +1।

আরও সম্পূর্ণতার জন্য, আমার .vimrc এ আমার যা আছে তা এখানে:

" push current line up or down
nnoremap <leader><Up> ddkP
nnoremap <leader><Down> ddp

" exchange character under cursor with the next character without moving the cursor
nnoremap gc xph

" exchange word under cursor with the next word without moving the cursor
nnoremap gw "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>

" push word under cursor to the left
nnoremap <leader><Left> "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>

" push word under cursor to the right
nnoremap <leader><Right> "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>/\w\+\_W\+<CR><C-l>

উত্স: তেজ উইকি

আমি দেখতে পাচ্ছি আমার (এবং উইকির) gwহেপাটাইটের চেয়ে কিছুটা আলাদা। আমি নিশ্চিত না কোনটি ভাল।


4

সেই দীর্ঘ সমাধানটি কুৎসিত। মনে করুন আপনার কার্সারটি প্রথম শব্দের প্রথম অক্ষরের বাম দিকে রয়েছে, এটি 'পি'। এটা করুন: dwlpldw%p। এটি আপনার বিশেষ ক্ষেত্রে খাপ খায়। প্রতিদিনের সম্পাদনা নিয়ে কীভাবে কাজ করবেন? চেষ্টা করুন dwwP, বা dWWP। : ডি

টিপস: আপনার প্রায়শই এটি করার প্রয়োজন না হলে সর্বদা দীর্ঘ নিয়মিত অভিব্যক্তি লিখবেন না। অন্যথায় আপনার ভিআমআরসি ফুরফুরে। সমস্ত ভিআইএম ব্যবহারকারীগণ এর বিল্টিন কার্সার আন্দোলনের সাথে পরিচিত হবে।


1

আমি একটি সমন্বয় ব্যবহার করে পুনরাবৃত্তি ম্যাপিং আপ লিখেছেন তেজ-বিনিময় , repeatable (যা উপর নির্ভর করে repeat.vim ), এবং argtextobj

" Swap function arguments, move the argument under the cursor to the left or to
" the right.
Repeatable map <leader>al cxiaf,cxia
Repeatable map <leader>ah cxiaF,hcxia

এই ম্যাপিংগুলির জন্য এক্সচেঞ্জ এবং পুনরাবৃত্তিযোগ্য প্লাগইনগুলি ব্যবহার করার সুবিধা হ'ল:

  • একটি পূর্বাবস্থায় uফেরানোর ফলে অদলবদল পূর্বাবস্থায় ফিরে আসবে (তারা পারমাণবিক পরিবর্তন)
  • আপনি .যুক্তিটি বাম / ডানদিকে চালিয়ে যেতে ব্যবহার করতে পারেন ।

আমি জানি আমি জানি, একটি সাধারণ ক্রিয়াকলাপের জন্য এটি পুরো অনেকগুলি প্লাগইনের মতো মনে হয় তবে এই প্লাগইনগুলি আপনাকে আর কী দেয় তা ভেবে দেখুন :

  • argtextobj আপনাকে মুছে ফেলার ( এবং ), এবং ইয়ঙ্কিং ( ) এর জন্য iaএবং টেক্সটবজ দেয় ।aadiadaayia
  • তেজ-পুনরাবৃত্তি এবং আপনার ম্যাপিং সঙ্গে পুনরাবৃত্তি কোন তৈরীর জন্য repeatable .
  • ভিএম-এক্সচেঞ্জ আপনাকে পুনরাবৃত্তিমূলক, পাঠ্যের পারমাণবিক আদান প্রদান করে।

1

লাতিন ভাষার জন্য ম্যাপিংগুলি অদলবদল করুন

ভিম উইকি থেকে প্রাপ্ত অদলবদল ম্যাপিং উচ্চারণযুক্ত অক্ষরগুলির সাথে শব্দের সাথে সঠিকভাবে কাজ করবে না

এই ম্যাপিংগুলি (ইউরোপীয়) আইএসও / আইইসি_8859-1 ল্যাটিন -1 পরিপূরক অক্ষরের সাথে কাজ করার জন্য অভিযোজিত । এই সব দৃষ্টান্ত দ্বারা substituting সম্পন্ন করা হয় \wসঙ্গে [0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]এবং সমস্ত উদাহরণ \_Wদিয়ে \_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]

অনুসন্ধান হাইলাইটিং ক্লিয়ারিং

তদ্ব্যতীত, অনুসন্ধান হাইলাইটিং যেখানে প্রয়োজন সাফ করা হয়:nohlsearch<return>প্রয়োজন অনুসারে প্রতিটি ম্যাপিংয়ের শেষে যুক্ত করে এটি অর্জন করা হয় ।

এখানে শেষ ফলাফল:

" Use gc to swap the current CHARACTER with the next, WITHOUT changing the cursor position.
nnoremap <silent> gc xph

" Use gw to swap the current WORD with the next, WITHOUT changing the cursor position.
nnoremap <silent> gw "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>

" Disable Alt+[menukey] menu keys (i.e. Alt+h for help)
set winaltkeys=no

" Use Alt + ← or Alt + h to swap the current WORD with the previous, keeping the cursor on the current word. This feels like "PUSHING" the word to the left.
nnoremap <silent> <A-Left> "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
nnoremap <silent> <A-h>    "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
" <A-h> corresponds to è

" Use Alt + → or Alt + l to swap the current WORD with the next, keeping the cursor on the current word. This feels like "PUSHING" the word to the right.
nnoremap <silent> <A-Right> "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
nnoremap <silent> <A-l>     "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
" <A-l> corresponds to ì

" Use g{ to swap the current PARAGRAPH with the next.
nnoremap g{ {dap}p{

0

এক্সিম প্লাগইন একটি ভাল সরবরাহ করে। তাদের সমস্ত ক্রেডিট :)

:SwapWords

.. এবং আপনি যদি পুরো প্লাগইনটি ইনস্টল করতে না চান তবে এখানে তাদের ফাংশনটি বের করা হয়েছে:

" Swap words:
" taken from Eclim
" https://github.com/ervandew/eclim

function! SwapWords() " {{{
  " Initially based on http://www.vim.org/tips/tip.php?tip_id=329

  " save the last search pattern
  let save_search = @/

  normal! "_yiw
  let pos = getpos('.')
  keepjumps s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/
  call setpos('.', pos)

  " restore the last search pattern
  let @/ = save_search

  silent! call repeat#set(":call SwapWords()\<cr>", v:count)
endfunction " }}}

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