выше/ниже?
Т.е. если строчным выделением, то понятно - p/P.
А если я рефакторю и с помощью "c" заменяю кусок текста на то, что я хочу вынести в отдельную переменную в другом месте, то получается очень неудобно: вставить/поредактировать строки, добавить название новой переменной и т.д.
можно перейти в режим вставки через o или O, а потом вставить из регистра по Ctrl-R
О, это уже гораздо удобнее! И даже вимовый плагин idea такое умеет. Немного всё равно придётся перестроиться, т.к. сначала получается надо начать вводить определение новой переменной и только потом вставить - через Ctrl+R или через <Esc>p
можно после o набрать название переменной сначала, а потом Ctrl-R "
Попробовал улучшить этот способ для моего случая. 1. Выбираю, то, что мне нужно заменить: v 2. Нажимаю c 3. Ctrl+R q (регистр, куда я закинул путь к тому объекту, куда я переношу) 4. Дописываю имя переменной, Esc 5. Переключаюсь в другой таб 6. Ищу место, где вставить, там o/O 7. Пишу "<имя переменной> =" 8. Ctrl+R " И вот тут проблема, т.к. то, что я заянкал, вставляется в странном виде, как будто кривой автоиндент Я конечно сейчас поменял, что бы вместо пункта 8 было <Esc>p, но менее универсально получается . %)
мож какой-нибудь :set paste нужен?
Скорее всего, но для данного этапа мне хватит <Esc>p вместо Ctrl+R" в режиме редактирования. Может есть, аналог Ctrl+R без этой особенности?
я просто предположил, что оная настройка влияет на это тоже
Я кстати себе такой сценарий автоматизировал: vnoremap <expr> <Plug>(vftdan-extract) <sid>extract_var_sequence(v:register) vmap g<A-e> <Plug>(vftdan-extract) function! s:extract_var_sequence(reg) let l:prefix = get(b:, 'lang_var_decl_prefix', '') let l:equals = get(b:, 'lang_var_decl_assign_infix', ' = ') let l:var_prefix = get(b:, 'lang_var_prefix', '') let l:var_postfix = get(b:, 'lang_var_postfix', '') let l:postfix = get(b:, 'lang_statement_postfix', ';') call inputsave() let l:varname = input('Variable name: ') call inputrestore() return '"' . a:reg . 'c' . l:var_prefix . l:varname . l:var_postfix . "\<ESC>O" . l:prefix . l:varname \ . l:equals . "\<C-R>\<C-R>" . a:reg . l:postfix \ . "\<ESC>:let @" . a:reg . ' = "' \ . escape(l:varname, '"\') . "\"\<CR>" endfunction
И для разных типов файлов настройки автоматически ставятся
Обсуждают сегодня