প্রতিস্থাপনের পরে আমি কীভাবে উইমকে ম্যাচ হাইলাইট করা থেকে রক্ষা করব?


13

আমি set hlsearchআমার মধ্যে ~/.vimrc। এটি সাধারণত খুব দরকারী, তবে :nohআমার মতো প্রতিস্থাপন করার পরে এটি করা বিরক্তিকর '<,'>s/$/',/(যা আমি চালানোর পরে প্রতিটি লাইনের শেষটি হাইলাইট করে)। vimএইভাবে প্রতিস্থাপনের পরে আমি কীভাবে হাইলাইট না করব ?

আমি vim7.2 সহ উবুন্টু 9.04 এ আছি । ওএস এক্স 10.6 ( vim7.2) এও আমার একই সমস্যা রয়েছে । উভয়কেই কার্যকর করতে পারে এমন কিছু desire

আপডেট: আমার প্রাপ্ত সমস্ত উত্তরগুলি কেবলমাত্র একটি কী ম্যাপিং :noh(বা সমতুল্য) যুক্ত করছে। আমি সত্যিকার অর্থে কাস্টম কী আচরণগুলি এড়িয়ে চলার চেষ্টা করি যা সত্যই অভ্যস্ত হয়ে উঠতে পারে তবে সেগুলি ছাড়াই আমাকে খারাপভাবে ব্যর্থ করে তোলে (যেমন বন্ধুর কম্পিউটারে ইত্যাদি) computer আমি একটি প্রতিস্থাপন করার পরে vimস্বয়ংক্রিয়ভাবে করতে চাই :noh। এটি হ'ল আমি কেবল hlsearchযখন ব্যবহার করি তখনই ( /বা *অন্য কয়েকটি ক্ষেত্রে সম্ভবত) চাই তবে অন্যান্য সময় নয়।

উত্তর:


7

আপনি যদি স্থায়ীভাবে অক্ষম করতে না চান , তবে স্ট্যাকওভারফ্লোতে অনুরূপ প্রশ্নের উত্তরের এই পরামর্শে হাইলাইটটি টগল করার জন্য আপনি একটি কী বেঁধে রাখতে পারেন।

map  <F12> :set hls!<CR>
imap <F12> <ESC>:set hls!<CR>a
vmap <F12> <ESC>:set hls!<CR>gv

আপনি যদি স্থায়ীভাবে হাইলাইটটি অক্ষম করতে চান:

11.1. After I searched for a text with a pattern, all the matched text
      stays highlighted. How do I turn off the highlighting
      temporarily/permanently?

The 'hlsearch' option controls whether all the matches for the last
searched pattern are highlighted or not. By default, this option is not
enabled. If this option is set in a system-wide vimrc file, then you can
turn off the search highlighting by using the following command:

    :set nohlsearch

( ভিআইএম এফএকিউ থেকে )


2
আমি এই বিকল্প সম্পর্কে সচেতন ছিল। বিষয়টি হ'ল আমি সাধারণত আমি কি প্রতিস্থাপন করতে চাই তা অনুসন্ধান করছি না , তাই আমি প্রতিস্থাপন করা বেশিরভাগ ক্ষেত্রে হাইলাইট করা অর্থহীন। যাইহোক, আমি যখন কোনও কিছুর সন্ধান করছি তখন এটি খুব কার্যকর , তাই আমি এটি পুরোপুরি সরে যেতে চাই না ।
বেনজমিন ওকস

@ বেঞ্জামিন: আপনি স্পষ্টভাবে এটি অনুসন্ধান করেছেন। এটি কি: গুলি। একটি নিদর্শন অনুসন্ধান করে এবং তারপরে ম্যাচে (এস) এ রূপান্তরটি সম্পাদন করে। ব্যবহার: নোহল হ'ল সঠিক সমাধান কারণ এটি পরবর্তী অনুসন্ধান সম্পাদনা না করা অবধি বর্তমান অনুসন্ধান প্যাটার্নের হাইলাইটটি বন্ধ করে দেয়। এটি 'hlsearch' বিকল্পের স্থিতি পরিবর্তন না করে বা পূর্ববর্তী অনুসন্ধান শব্দটির সঞ্চিত মানকে প্রভাবিত না করে এটি করে।
জামেসান

2
@ জামেসান: আমি বুঝতে পারি যে এটি অনুসন্ধান এবং প্রতিস্থাপন। এটা ঠিক যে তখন আমার হাইলাইট করার দরকার নেই। বেশিরভাগই বিরক্তিকর কোনও কিছুর চেয়ে বেশি।
বেনিয়ামিন

কিছুক্ষণ আগে, আমি ডিফল্টরূপে হাইলাইট করা বন্ধ করতে এবং যখন আপনি চাইলে এটি চালু করতে শুরু করি, যেমনটি আপনি প্রস্তাব করেছিলেন। এখনও নিখুঁত না, তবে এটি আরও ভাল।
বেনিয়ামিন

9

আমার দুটি পৃথক সমাধান রয়েছে, উভয়ই বেশ ভাল, প্রত্যেকটিরই একটি ভিন্ন ভিন্ন আচরণ রয়েছে। আমার প্রিয় বিকল্প 2:

  1. আমার .vimrc এ নিম্নলিখিত দুটি লাইন রয়েছে:

    autocmd cursorhold * set nohlsearch
    autocmd cursormoved * set hlsearch
    

    প্রথমটি টাইমআউট (কনফিগারযোগ্য নয়) এর জন্য অপেক্ষা করে যদি কার্সারটি সরানো না হয় এবং hlsearch বন্ধ করে দেয়। দ্বিতীয়টি কার্সারটি আবার সরে গেলে এটি আবার চালু করে।

    এটি একটি নিখুঁত সমাধান নয়, তবে এটি আমার পক্ষে কাজ করে (এবং টাইমআউটটি কনফিগারযোগ্য হওয়ার সাথে নিখুঁত হবে - আপাতত, টাইমআউটটি ভিআইমের জন্য একটি বিল্টিন টাইমারের সাথে আবদ্ধ is)

  2. অথবা আপনি এই লাইনগুলি ব্যবহার করে দেখতে পারেন:

    autocmd cursorhold * set nohlsearch
    noremap n :set hlsearch<cr>n
    noremap N :set hlsearch<cr>N
    noremap / :set hlsearch<cr>/
    noremap ? :set hlsearch<cr>?
    

এটি কোনও কার্সার চলাচলের সংক্ষিপ্ত সময়ের বাইরে যাওয়ার পরে hlsearch বন্ধ করে দেয় এবং মানক অনুসন্ধান কমান্ডের জন্য এটি আবার চালু করে। এটি hlsearch আবার চালু করার সমস্ত সম্ভাবনা কভার করে না, তবে ধারণার প্রমাণের জন্য এটি স্টার্টার যথেষ্ট।


আপডেটের জন্য ধন্যবাদ - এখন পর্যন্ত এটি দেখেনি। (দেখে মনে হচ্ছে আপনি এটিও যুক্ত করেছেন? মজার বিষয়)) এটি একটি দুর্দান্ত ধারণা; আমি এটি সঙ্গে চারপাশে খেলতে হবে।
বেনজমিন


আমি নীচের সাথে বিকল্প 1 এ প্রথম লাইনটি সংশোধন করেছি autocmd cursorhold * set nohlsearch | let @/ = "" এটি অনুসন্ধান নিবন্ধকে সাফ করার পাশাপাশি হাইলাইটটি সরিয়ে দেবে। এই সেট আপটির সাথে খুব বেশি সময় ব্যয় করা হয়নি তবে আমি এখানে যারা এখানে এসেছি তাদের জন্য এটি রেখে দিতে চেয়েছিলাম।
বার্কলে মার্টিনেজ

2

হাইলাইটিং থেকে পরিত্রাণ পেতে আমি কেবল "/ এসিডেফ" টাইপ করি (ধরে নেওয়া "এস্যাসেডএফ" ফাইলটিতে নেই)। আমি জানি এটি বেশ সরল, তবে এটি আমার পক্ষে কাজ করে।


2
এটি একই ধারণা :noh, তবে এটি সবসময় কার্যকর হয় না। :) মজার আপনি এটি উল্লেখ করেছেন, যদিও: আমার এক বন্ধু থাকত যে তার নামটি সর্বদা টাইপ করত কারণ এটি তাঁর লেখায় "এসএসডিএফ" এর মতো কিছু চেয়ে কম আসে। (কিন্ডা মজার, আমি মনে করি।)
ওকে

সত্য। হয়তো আমি মনে রাখব: নাহ পরের বার।
গ্রেগ গ্রাহাম 20

1

আপনার .vimrc ফাইলে নিম্নলিখিতটি রাখুন:

nnoremap <silent> <F11> :exe ":silent! normal /$^\r"<CR>

এটি নিঃশব্দে হাইলাইটেড অনুসন্ধান শব্দটি লুকিয়ে রাখবে তবে :set hlsearchবৈশিষ্ট্যটি অক্ষম করে না । এটি পরবর্তী অনুসন্ধানে আবার সক্রিয় করা হয়।


এই উদ্দেশ্যে ডিজাইন করা বিল্টিন কমান্ডটি কেবল ব্যবহার করা আরও ভাল -: নোহল। তারপরে আপনি আপনার অনুসন্ধানের নিবন্ধের বিষয়বস্তুগুলি উড়িয়ে দেবেন না, যা পরের ম্যাচে ঝাঁপিয়ে পড়া, কোনও নির্দিষ্টকরণের সময় কোনও নকশার ডিফল্ট মান ইত্যাদির মতো জিনিসগুলির জন্য ব্যবহৃত হয়
জামেসান

হ্যাঁ, তবে এটি আমার বিরক্ত করেছে যে আমার পরবর্তী অনুসন্ধানটি অনুমিত হিসাবে হাইলাইট করা হয়নি। তাই আমি এই দ্রুত সমাধান নিয়ে হাজির। এটি নোংরা হতে পারে তবে এটি কাজ করে। আমি মনে করি এটি ভিমের জন্য গ্রহণযোগ্য - যদিও আমি কোনও বাস্তব, বড় প্রকল্পের উত্স কোডে "নোংরা" জিনিসগুলি ব্যবহার না করি।
গ্রেগর মল্লেগার

1

@/বিকল্প হওয়ার পরে রেজিস্টারটিকে পুনরায় সেট করা (যা আসলে একটি পঠন-নিবন্ধের রেজিস্ট্রেশন) is এটি পূর্ববর্তী হাইলাইটটি পুনরুদ্ধার করে:

command! -nargs=* -range S
\ let atslash=@/|exe ':'.<line1>.','.<line2>.'s'.<q-args>|let @/=atslash

তবে এটিতে এখনও কয়েকটি সমস্যা রয়েছে:
- পরিবর্তনের পরিবর্তে :sএটি একটি নতুন কমান্ডের সংজ্ঞা দেয়। যদিও এটা ব্যবহার করা সম্ভব cabbrevম্যাপ :sথেকে :S, আমি যেমন সব বাক্য ধরতে কোন উপায় জানেন :<range>s
- আপনি যদি :nohlকেবল একটি অনুসন্ধান গোপন করতে পূর্বে ব্যবহার করেন তবে এটি পূর্ববর্তী অনুসন্ধানটিকে আবার হাইলাইট করবে। আমি :nohlআগে বলা হয়েছিল কিনা এটির কোনও উপায় জানি না । (এটি প্রায়শই ঘুরে দেখা এবং :nohlকমান্ডটি ওভাররাইড করা সম্ভব হতে পারে তবে এর জন্য সমস্ত অনুসন্ধান কমান্ডকে ওভাররাইড করাও প্রয়োজন, যা খুব বেশি হতে পারে ...)।

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