Как указано в заголовке, я хотел бы перейти к следующему вводу символа, находящегося под курсором в Vim. Я знаю о f <character>
и т. Д., Но я специально хочу «этого» персонажа. Как мне это сделать?Перейти к следующему символу под курсором в Vim
ответ
Это не существует изначально.
Если вы хотите, вы можете создать новое сопоставление (например, связанное с <leader>a
). Добавьте следующие строки в .vimrc и перезапустить:
nnoremap <leader>a vy/<C-R>"<CR>
" vy : copy the character under the cursor
"/: open search
" <C-R>" : paste the character
" <CR> : launch the search
Затем каждый последующий поиск будет доступен через ключ п как обычно.
(лидер является УСПЕШНЫМ ключ \, но может быть переназначен с помощью команды: set mapleader =
)
Это не является частью вопроса, но я хотел бы добавить, что для легкой навигации, это хорошая идея посмотреть на плагин easymotion и знать, что он существует.
Используйте *
для поиска вперед [count] '-го вхождения слова, ближайшего к курсору. Я сомневаюсь, что есть ключ для следующего персонажа, но вы можете /x
, затем n
, чтобы перейти к следующему x
.
Я не в курсе встроенный эквивалент *
для символа под курсором, но отображения ниже, должны покрыть ваши требования:
nnoremap <silent> <key> "zyl:normal! f^Rz^M
nnoremap <silent> <key> "zyl:normal! F^Rz^M
nnoremap <silent> <key> "zyl:normal! t^Rz^M
nnoremap <silent> <key> "zyl:normal! T^Rz^M
^R
получается с <C-v><C-r>
и ^M
с <C-v><CR>
.
Не могли бы вы уточнить, что ''
' '
с использованием keynotation как '
Вы можете сделать:
yl:normal! f<Ctrl-R>"<CR>
Объяснение:
yl
- дергать (копия) символ под курсором в "
регистр
:normal
- выполнить команды нормального режима, который следует
f<Ctrl-R>"<CR>
- введите содержимое регистра "
и запустите f{char}
.
Конечно, вы захотите создать сопоставление для команды, чтобы сделать ее пригодной для использования.
Если у вас есть визуальное отображение на *
, который ищет следующую вещь выбранной (как этот one), вы просто должны ввести v*
NB: существует несколько записей о SO о том, как расширить | начать | в визуальный режим и один на vim.wikia.
Я предпочел бы использовать отображение, как это: ': nnoremap уу/ = '\ V'.escape (GETREG ('" '),' \\/') 'Это будет экранировать специальные символы правильно. –
На мой вопрос было много хороших ответов.Я увлекаюсь решениями вроде этого, так что это мой выбор. Спасибо, как за указание, что он не существует изначально и для вашего альтернативного решения. –
gustafbstrom
@gustafbstrom: дополнение Кристиана, вероятно, лучше в конце, но если вы ограничиваете себя, то ascii char должно быть достаточно хорошим. –