2013-09-20 2 views
3

Скажите, что я хочу <C-*>, чтобы предоставить мне функциональность команды :set nohlsearch. Как это сделать? Кажется, что команда карты может отображать набор нажатий клавиш с другим набором. Как сопоставить комбинацию клавиш с командой?Установка сочетания клавиш для команды vim

+0

Вы должны изменить вопрос, чтобы отметить желание, что команда включить «заглавную букву» (то есть модифицированный) –

+0

@NewAlexandria: Я не понимаю, ваше предложение, не могли бы вы уточнить? –

+0

«Установка ярлыка на клавиатуре в Vim», сама по себе, слишком тривиальная задача для запроса на этом сайте - вот почему вы отключаете вниз.Вам нужно сделать вопрос более правильным и неочевидным: использование модификаторов, таких как «shift» –

ответ

7

Вы бы сделать это следующим образом:

:nnoremap <C-*> :set nohlsearch<CR> 

<C-*> означает, нажав Ctrl и Сдвиг и (на английском языке с клавиатуры макет, по крайней мере) одновременно , К сожалению, эта конкретная комбинация не будет работать. Из-за того, что ввод с клавиатуры осуществляется внутренне, к сожалению, сегодня это вообще невозможно, даже в GVIM. Некоторые комбинации клавиш, как Ctrl + неалфавитный не могут быть отображены, и Ctrl +буквы против Ctrl + Сдвиг + буквы нельзя отличить. (Если ваш терминал не отправляет отдельный код termcap, который больше всего этого не делает.) В режиме ввода или командной строки попробуйте ввести комбинацию клавиш. Если ничего не происходит/не вставлено, вы не можете использовать эту комбинацию клавиш. Это также относится и к <Tab>/<C-I>, <CR>/<C-M>/<Esc>/<C-[> и т.д. (только исключение составляет <BS>/<C-H>.) Это известная точка боли, и предметом различных дискуссий по vim_dev и канала #vim IRC.

Некоторые люди (прежде всего Пол ЛевНерд Эванс) хотят исправить это (даже для консоли Vim в терминалах, которые поддерживают это), и плавают various proposals.

Но на сегодняшний день никаких пятен или добровольцев еще не вышли, хотя многие из них выразили желание иметь это в будущем выпуске Vim 8.

Что вы можете сделать, это выбрать другую комбинацию клавиш, например. одна из функциональных клавиш:

:nnoremap <F5> :set nohlsearch<CR> 
+0

+1 для подробного объяснения. также как вы можете набрать так много текста с форматом за такое короткое время (около 3-4 минут)! о, я вижу, вы должны ввести их в vim! ;) – Kent

+1

@Kent: Одно слово: snipMate :-) Точно так же я поражен тем, как так много ответов приходит так быстро, как от вас, так и от (часто) romainl. –

+0

BTW, мне бы очень хотелось, чтобы это было исправлено; У меня заканчиваются ключевые комбо :-) При стандартном ответе я смогу найти все эти вопросы, когда я отправлю запрос Брэму, чтобы наконец решить эту проблему (когда я чувствую, что время готово). –

0

Вы должны быть в состоянии сделать это в вашем .vimrc:

nnoremap <C-*> :set nohlsearch<CR> 

хотя я не уверен, что это всегда поддерживается ярлык.

См another exemple here

2

Как и другие уже отмечали, все типы привязок не представляется возможным из-за пути мазки направляются к терминалу. Однако, чтобы выполнить то, о чем вы просите (: nohlsearch), этот код ниже позволяет вам переключать выделение, нажимая пробел.

set nocompatible 

let g:highlighting = 0 
function! Highlighting() 
    if g:highlighting == 1 && @/ =~ '^\\<'.expand('<cword>').'\\>$' 
    let g:highlighting = 0 
    return ":silent nohlsearch\<CR>" 
    endif 
    let @/ = '\<'.expand('<cword>').'\>' 
    let g:highlighting = 1 
    return ":silent set hlsearch\<CR>" 
endfunction 
nnoremap <silent> <expr> <Space> Highlighting() 
+0

Спасибо, это отличная альтернатива! Мне жаль, что я не могу принять ваш ответ. –

Смежные вопросы