নির্বাচিত শব্দের সমস্ত উপস্থিতি হাইলাইট করবেন?


159

আমি কীভাবে নোটপ্যাড ++ এর মতো জিভিআইমে একটি নির্বাচিত শব্দের সমস্ত উপস্থিতি হাইলাইট করতে পারি?

উত্তর:


202

সাধারণ মোডে:

:set hlsearch

তারপর আদেশের সঙ্গে একটি প্যাটার্ন অনুসন্ধান /সাধারণ মোড, বা <Ctrl>oঅনুসৃত দ্বারা /সন্নিবেশ মোডে আছে। *সাধারণ মোডে কার্সারের নীচে শব্দের পরবর্তী ঘটনা অনুসন্ধান করা হবে। hlsearchবিকল্প তাদের সব যদি সেট হাইলাইট হবে। #শব্দের আগের ঘটনাটি অনুসন্ধান করবে।

পূর্ববর্তী অনুসন্ধানের হাইলাইটটি সরাতে:

:nohlsearch

আপনি :nohlsearch<CR>কিছু সুবিধাজনক কী মানচিত্র করতে ইচ্ছুক হতে পারে ।


34
আপনি যদি hlsearchঅনেকগুলি টগল করার পরিকল্পনা করে থাকেন তবে আপনি এর :set hlsearch!পরিবর্তে মানচিত্র বানাতে পারেন :set nohlsearch। এটি সেটিংটি সর্বদা বন্ধ করার চেয়ে টগল করে।
ডেভিড উইনস্লো

1
এছাড়াও, সচেতন হন যে কার্সারটি শব্দের আগের (#) বা পরবর্তী (*) উপস্থিতিতে চলে যাবে
জুয়ান ক্যাম্পা

1
কিন্তু, তোমার অবস্থানটা কোথায় চাপা ফিরে যেতে পারেন *বা #দ্বারা <Ctrl>oস্বাভাবিক মোডে আছে।
Ruslan

8
পরিবর্তে :nohlsearch, আপনি কেবল ব্যবহার করতে পারেন:noh
ক্রিশন

সেট করুন .vimrc: noremap <F4> :set hlsearch! hlsearch?<CR>হাইলাইট এবং এর মাধ্যমে হাইলাইট সরানোর মধ্যে টগল করার জন্য <F4>
চালিস্ট

124

*কী শব্দ যে কার্সার অধীনে সব ঘটনার হাইলাইট হবে।


31
কেবলমাত্র যদি &hlsearchচালু থাকে।
wilhelmtell

10
এটি কার্সারের অধীনে শব্দটির পরবর্তী ঘটনাতেও লাফিয়ে উঠবে। আপনি আগের সংঘটন ঝাঁপ করতে চান তাহলে, ব্যবহার #
ভিনিসিয়াস পিন্টো

7
আমি কি এটি কেবল বর্তমান অবস্থানে থাকতে পারি?
nn0p

@ nn0p হ্যাঁ আপনি পারেন - সেক্ষেত্রে স্বীকৃত উত্তরটি অনুসরণ করুন stackoverflow.com/a/3431203/363688 । এটি কেবলমাত্র একটি বিকল্প ক্রিয়া যা সমস্ত উপস্থিতিকেও হাইলাইট করবে।
স্লিপনেট

1
এই কার্যকারিতাটি ব্যবহার করার কোনও উপায় আছে তবে হাইলাইট হওয়া এক বা একাধিক শব্দের সাথে?
সুং চ

22

আমি জানি এটি সত্যিই একটি পুরানো প্রশ্ন, তবে কেউ যদি এই বৈশিষ্ট্যে আগ্রহী হন তবে এই কোডটি http://vim.wikia.com/wiki/Auto_hightlight_current_word_wen_idle চেক করতে পারেন

" Highlight all instances of word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
   let @/ = ''
   if exists('#auto_highlight')
     au! auto_highlight
     augroup! auto_highlight
     setl updatetime=4000
     echo 'Highlight current word: off'
     return 0
  else
    augroup auto_highlight
    au!
    au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
    augroup end
    setl updatetime=500
    echo 'Highlight current word: ON'
  return 1
 endif
endfunction

1
এই স্ক্রিপ্টটি এমনভাবে সংশোধন করা সম্ভব যে কার্সারের অধীনে পাঠ্যটি প্রথমে হাইলাইট করা হয় যখন z / টিপে চাপানো হয় যখন কার্সার অন্য শব্দগুলিতে সরানো হয় তখনও? প্রাথমিক শব্দটির সন্ধানকারী উত্স কোডের মাধ্যমে স্ক্রোল করার সময় এটি কার্যকর হবে।
স্টেনসুটলা

18

সবচেয়ে সহজ উপায়, সাধারণ মোডে টাইপ করুন *

সক্ষম ও অক্ষম করার জন্য আমার কাছে এই ম্যাপিংগুলি রয়েছে

"highligh search enabled by default
set hlsearch
"now you can toggle it
nnoremap <S-F11> <ESC>:set hls! hls?<cr>
inoremap <S-F11> <C-o>:set hls! hls?<cr>
vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gv

এটিতে ক্লিক করে শব্দটি নির্বাচন করুন

set mouse=a     "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>

বোনাস: কাউন্টওয়ার্ড ফাংশন

fun! CountWordFunction()
    try
        let l:win_view = winsaveview()
        let l:old_query = getreg('/')
        let var = expand("<cword>")
        exec "%s/" . var . "//gn"
    finally
        call winrestview(l:win_view)
        call setreg('/', l:old_query)
    endtry
endfun
" Bellow we set a command "CountWord" and a mapping to count word
" change as you like it
command! -nargs=0 CountWord :call CountWordFunction()
nnoremap <f3> :CountWord<CR>

মাউসের সাহায্যে শব্দ নির্বাচন করা এবং একবারে সংঘটন ঘটনাগুলি: ওবিএস: লক্ষ্য করুন যে এই সংস্করণে আমাদের শেষে "কাউন্টওয়ার্ড" কমান্ড রয়েছে

nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>

এখন আমি ব্যবহার করি nnoremap * *``cgnএবংnnoremap # #``cgN
সেরজিওআরাউজো

সুতরাং আমি টাইপ করার পরে, আমি *কীভাবে হাইলাইটিং বন্ধ করব?
ব্যবহারকারী5359531

এটি নথিতে বর্তমান শব্দটি হাইলাইট করার জন্য
চাইলিস্ট

@ ব্যবহারকারী5359531 :nohবা:nohlsearch
dylnmc

@ user5359531 কি nnoremap <silent> * :execute "normal! *N"<cr>এবং nnoremap <silent> # :execute "normal! #n"<cr>? এগুলি কেবল কার্সারের নীচে শব্দটি হাইলাইট করে তবে এটি পরবর্তী ঘটনাতে স্থানান্তরিত করে না।
dylnmc

10

অনুসন্ধান ভিত্তিক সমাধান ( *, /...) সরানো কার্সার, যা দুর্ভাগ্যজনক হতে পারে।

বিকল্পটি হ'ল বর্ধিত চিহ্ন.ভিম প্লাগইন ব্যবহার করা , তারপরে .vimrcডাবল-ক্লিক ট্রিগার হাইলাইট করার জন্য আপনার সম্পূর্ণ করুন (আমি জানি না কী কীবোর্ড নির্বাচনটি একটি কমান্ডকে ট্রিগার করতে পারে):

"Use Mark plugin to highlight selected word  
map <2-leftmouse> \m   

এটি একাধিক হাইলাইটস, অধ্যবসায় ইত্যাদির অনুমতি দেয়

হাইলাইটিং অপসারণ করতে হয়:

  • আবার ডাবল ক্লিক করুন
  • :Mark (পরবর্তী নির্বাচন হওয়া পর্যন্ত স্যুইচ অফ)
  • :MarkClear

2
অনুসন্ধান ভিত্তিক সমাধানগুলি কেবলমাত্র কার্সারকে সরান যদি বর্ধনশীল অনুসন্ধান চালু থাকে। আপনি ভালো এটা বন্ধ করতে পারেন: :set noincsearch। আমার মতে এটি ভিমের সবচেয়ে বিরক্তিকর বৈশিষ্ট্যগুলির মধ্যে একটি এবং আমি তাজা ইনস্টলের জন্য অক্ষম হওয়া প্রথম জিনিসগুলির মধ্যে একটি।
jahroy

3
আমার মনে হয় *নিঃশর্তভাবে কার্সারটি সরানো হবে। এবং আমি দেখতে পাচ্ছি না কীভাবে incsearchবিরক্ত হতে পারে, যেহেতু এটি কেবলমাত্র 'সামনের দিকে তাকান', প্রকৃতপক্ষে আপনার অবস্থান পরিবর্তন না করেই বর্তমান অনুসন্ধান সম্পাদন করছে।
YvesgereY

3
বাহ ... আপনি ঠিক বলেছেন। আমি ধরে নিয়েছিলাম যে অফ করা বন্ধ করা incsearchচলাচলকে বাধা দেবে, তবে একটি দ্রুত পরীক্ষা আপনাকে সঠিক বলে নিশ্চিত করে। আমার ক্ষমা। যাইহোক, এটা যে প্রতিরোধ আন্দোলন একটি ম্যাপিং তৈরি করতে সুপার সহজ আছে: :nnoremap * *N। আমি বিশ্বাস করতে পারি না যে আপনি বিরক্তিকর হয়ে উঠছেন না যে আপনি কোনও অনুসন্ধান সম্পাদন করার সাথে সাথে আপনার কার্সারটি পুরো পর্দায় ঝাঁপিয়ে পড়ে। তবে ... এই জিনিসগুলি সম্পূর্ণরূপে বিষয়গত। ভিভ লা ডিফারেন্স ;-)
jahroy

3
আপনি সক্ষম করেছেন :let @/='hilight_this'ধরে নিয়েও আপনি এটি করতে পারেন hlsearch। এটি জাম্পিং ছাড়াই পাঠ্যকে হাইলাইট করে এবং আপনাকে বিদ্যমান সেটিংস পরিবর্তন করতে হবে না। এটি বর্তমানে অনুসন্ধান রেজিস্টারে সঞ্চিত মানটিকে পরিবর্তন করে।
বেন ডেভিস

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। <লিডার> এম কাজ করে, ডাবল ক্লিক ম্যাপিংয়ের প্রয়োজন নেই।
সাসান

4

প্রথম (বা আপনার .vimrc এ):

:set hlsearch

তারপরে আপনি যে শব্দটি হাইলাইট করতে চান তার উপরে কার্সারটি অবস্থান করুন এবং হিট করুন *

hlsearchএর অর্থ বর্তমান অনুসন্ধানের সমস্ত উপস্থিতিকে হাইলাইট করে এবং *কার্সারের নীচে শব্দটির সন্ধান করা।


3

প্রথমে নিশ্চিত করুন যে নিম্নলিখিত আদেশটি জারি করে hlsearch সক্ষম করা আছে is

:set hlsearch

সেট হিসাবে আপনার .vimrc ফাইল এ এটি যুক্ত করতে পারেন

set hlsearch

এখন যখন আপনি কমান্ড মোডে বা নিয়মিত অনুসন্ধান কমান্ডে তাত্ক্ষণিক অনুসন্ধান পদ্ধতি ব্যবহার করেন, সমস্ত ফলাফল হাইলাইট করা হবে। ফলাফলের মধ্যে এগিয়ে যাওয়ার জন্য, 'এন' টিপুন পেছনের দিকে যেতে 'এন' টিপুন

সাধারণ মোডে, কার্সারের নীচে শব্দের তাত্ক্ষণিক অনুসন্ধান করতে এবং একটি কমান্ড '*' চাপলে পরবর্তী ঘটনাটিতে যেতে, আপনি কার্সারের নীচে শব্দটি অনুসন্ধান করতে পারেন এবং '# টিপে পূর্বের উপস্থিতিতে যেতে পারেন '

সাধারণ মোডে, দ্রুত অনুসন্ধানও এর সাথে ডাকা যেতে পারে

/searchterm<Enter>

অবিশ্বাসের ব্যবহারের উপরের হাইলাইটগুলি সরাতে, আমি আমার .vimrc এ একটি শর্টকাটে আবদ্ধ করেছি

:nohl



2

কার্সার সরানো ছাড়াই শব্দ হাইলাইট করার জন্য, plop

" highlight reg. ex. in @/ register
set hlsearch
" remap `*`/`#` to search forwards/backwards (resp.)
" w/o moving cursor
nnoremap <silent> * :execute "normal! *N"<cr>
nnoremap <silent> # :execute "normal! #n"<cr>

আপনার vimrc মধ্যে।

এটি সম্পর্কে দুর্দান্ত কি g*এবং g#এখনও "স্বাভাবিক" *এবং এর মতো কাজ করবে #


সেট hlsearchঅফ করতে, আপনি "শর্ট-ফর্ম" ব্যবহার করতে পারেন (যদি না আপনার কমান্ড মোডে "নোহ" দিয়ে শুরু হওয়া অন্য ফাংশন থাকে)::noh । অথবা আপনি দীর্ঘ সংস্করণ ব্যবহার করতে পারেন::nohlsearch

চূড়ান্ত সুবিধার্থে (আমি নিজেকে hlsearch20 বার টগল করতে দেখি ), আপনি টগল করার hlsearchমতো কিছু মানচিত্র করতে পারেন:

" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>

।। যদি এটি <leader>হয় \(এটি ডিফল্টরূপে), আপনি টগল করতে সাধারণ মোডে \st(দ্রুত) টিপতে পারেন ।hlsearch

অথবা আপনি কেবল :nohম্যাপ করতে চান :

" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>

কেবল উপরে রান :nohlsearch(অসদৃশ তাই :set hlsearch!) এটি এখনও শব্দ পরের বার আপনি যখন চাপুন তুলে ধরবে *বা #মধ্যে স্বাভাবিক মোড।

চিয়ার্স



1

ব্যবহার autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))

IncSearchআপনি কিছু সেট করেছেন তা নিশ্চিত করুন । যেমন call s:Attr('IncSearch', 'reverse')। বিকল্পভাবে আপনি তার জায়গায় অন্য একটি হাইলাইট গ্রুপ ব্যবহার করতে পারেন।

এটি কোনও দেরি না করে আপনার কার্সারের নীচে শব্দের সমস্ত উপস্থিতিকে হাইলাইট করবে। আমি দেখতে পাচ্ছি যে আমি কোডের মধ্য দিয়ে ঝাঁকুনি দিলে একটি বিলম্ব আমাকে কমিয়ে দেয়। হাইলাইট রঙটি শব্দের বর্ণের সাথে মিলবে, তাই এটি আপনার স্কিমের সাথে সামঞ্জস্য থাকে।


0

কেন শুধু নয়: z /

এটি কার্সারের অধীনে বর্তমান শব্দটি এবং অন্য কোনও সংঘটিত হাইলাইট করবে। এবং আপনি যে আইটেম অনুসন্ধান করছেন তার জন্য আপনাকে আলাদা কমান্ড দেওয়ার দরকার নেই। সম্ভবত এটি অপরিষ্কার gvim পাওয়া যায় না? এটি ডিফল্টভাবে vim মধ্যে।

* যদি আপনি কার্সারটি পরবর্তী ঘটনায় যেতে চান তবেই তা ঠিক। দু'টি জিনিসের সাথে দৃষ্টিভঙ্গি তুলনা করার সময় আপনি প্রায়শই কার্সারটি সরাতে চান না এবং প্রতিবার * কীটি টিপুন বিরক্তিকর।


Vim এবং gvim সাধারণত একই কমান্ড সেট থাকে। "Z /" কমান্ডের সহায়তা দস্তাবেজের কোনও রেফারেন্স নেই।
wds

এটি কেবল জিভিমে নয়, ভিমেও উপলব্ধ। কেবল এটি পরীক্ষা করা হয়েছে - স্পষ্টতই কাজ করে না।
Ruslan

পূর্ববর্তী উত্তরে উল্লিখিত এই স্ক্রিপ্টটি ব্যবহারের সময় z / কাজ করে ।
fzzylogic

0
  1. আপনার ~/.vimrcফাইলে সেই লাইনগুলি যুক্ত করুন

" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>

  1. এর সাথে সেটিংস পুনরায় লোড করুন :so%
  2. সাধারণ মডেল শব্দটি উপরে যান।

  3. শব্দটি দিয়ে আপনার পুরো প্রকল্পকে পুনরাবৃত্তভাবে নীচে নামতে অনুসন্ধান করতে * F8 টিপুন


0

উদাহরণস্বরূপ এই প্লাগইনগুলি:

ভিতরে কার্সারের নিচে কেবল অনুসন্ধান করুনVimawesome.com কেবল

ক্লাগসিসি হিসাবে উল্লিখিত কীটি হ'ল হাইলাইটটি আপনার অনুসন্ধানের সাথে বিরোধ নয় : https://vim.fandom.com/wiki/Auto_hightlight_current_word_with_idle

এটি কীভাবে অনুসন্ধানের সাথে বিরোধী নয় এর স্ক্রিন শট: এখানে চিত্র বর্ণনা লিখুন নোট:

  • আমার স্ক্রিন-শটটিতে আমি রেখার দিকে স্যুইচ করেছি default
  • ডিফল্টরূপে কার্সারের অধীনে ভিআইএম-আলোকিত হাইলাইট / শব্দটি আন্ডারলাইন করে, আমার স্ক্রিন-শটে আমি এটি আনসেট করেছি
  • আমার রঙিন চামড়াগুলি বেশ ধূসর-ইশ। এটিও কাস্টমাইজ করতে আপনার পরীক্ষা করুন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.