Существует ли способ эмулировать ReSharper, “расширяют выбор” функция в Vim?

Вы можете проверить, что any из strings в each начинается с того, что в words, например,

>>> each
'abctotech present'
>>> word
'abc present'
>>> all(any(y.startswith(x) for y in each.split()) for x in word.split())
True
>>> each1
'toabctotech present'
>>> all(any(y.startswith(x) for y in each1.split()) for x in word.split())
False
7
задан dr Hannibal Lecter 18 April 2009 в 00:25
поделиться

4 ответа

Я быстро решил эту проблему. Это не работает как есть. Не стесняйтесь вносить изменения и публиковать их на вики-сайте vim или в виде плагина, если вы его доработаете.

есть вероятность, что вы захотите создать ag: resharp_list для каждого языка (например, один для языков с парантезами и т. Д.)

Все, что нужно, это маркер для исходной позиции курсора: Маркеры и автокоманда тайм-аута, которая сбрасывает индекс.

"resharp emulator
"TODO this needs a marker
"also c-w is bad mapping as it has a lag with all the other-
"window mappings
"
let g:resharp_index = 0

let g:resharp_select =  ['iw', 'is', 'ip', 'ggVG']

func! ResharpSelect()
    if g:resharp_index >= len (g:resharp_select)
        let g:resharp_index = 0
    endif

    exe "norm \<esc>v" . g:resharp_select[g:resharp_index]
    let g:resharp_index = g:resharp_index + 1
endfun

nnoremap <c-w>  :call ResharpSelect()<cr>
vnoremap <c-w>  :call ResharpSelect()<cr>

"Something to reset on timeout. TODO this doesn't work
au CursorHold :let g:resharp_index = 0<cr>
3
ответ дан 7 December 2019 в 01:26
поделиться

Ответ - да. В визуальном режиме вы можете использовать все обычные методы навигации, а также некоторые дополнительные.

Некоторые из моих любимых? Сначала нажмите v в обычном режиме, чтобы перейти в визуальный режим, затем нажмите:

  1. iw - чтобы выбрать внутреннее слово. Отлично подходит для выбора слова, исключая окружающие скобки или кавычки
  2. w - нажимать несколько раз, чтобы продолжать выбирать каждое последующее слово.
  3. b - выбирать обратные слова по словам
  4. ^ - выбирать все от текущей позиции до начала текста в строке
  5. $ - выбрать все из текущей позиции до конца строки

Я уверен, что другие здесь тоже могут добавить в этот список. Да, и не забывайте, что в режиме Visual Block Cv опробуйте его в vim с помощью приведенных выше команд, он работает в двух измерениях: -)

2
ответ дан 7 December 2019 в 01:26
поделиться

Если вы говорите о Vim (и вы должны быть :-), вы можете начать помечать текст с помощью v , то у вас есть все стандартные команды перемещения курсора (и, как вы знаете, их много ), которые расширяют выбор, а также перемещают курсор.

Затем вы просто делаете с выбранным текстом все, что хотите.

См. здесь для подробностей.

2
ответ дан 7 December 2019 в 01:26
поделиться

Нужно написать функцию, которая будет сохранять текущий выбор, а затем пробовать все более широкие выборки, пока не появится новый выбор. превышает сохраненный или выделяет весь текст. Возможны следующие варианты:

  • viW - выбрать слово
  • vis - выбрать предложение
  • vip - выбрать абзац
  • viB - выбрать текст в самых внутренних скобках
  • v2iB - выбрать текст в следующих самых внутренних скобках
  • ggVG - выделить весь текст
2
ответ дан 7 December 2019 в 01:26
поделиться