Я начал работать над огромным приложением PHP, содержащим тысячи строк кода в каждом файле, с множеством огромных блоков if, классов и функций, существующих в одном файле. Я не единственный разработчик, работающий над этим, поэтому я не могу сделать рефакторинг!
Я пытался использовать плагин Tags List, но он не очень помогает. Есть ли способ заставить VIM уважать только определенный блок кода и игнорировать остальную часть файла? Я надеюсь на некоторые или все эти функции:
- Включить нумерацию строк только для текущего кодового блока, начиная с 1 в строке, содержащей открытие
{
, и не показывая нумерацию для строк, предшествующих ему или после закрытия }
.
- Поиск по
/
будет ограничен только рассматриваемым блоком.
Я думаю о том, как выбрать текущий блок и отредактировать его в новом буфере при включении режима, а затем заменить существующий блок отредактированным блоком при выходе из режима. Однако у меня возникли проблемы с реализацией этой функции. Моя текущая версия такова:
map <F7> <Esc>mO<C-V>aBy:new<Return>p:set nu<Return>:set ft=php<Return>ggi<?php<Return><Esc>
map <F8> <Esc>ggdd<C-V>aBx:bp<Return>`O<C-V>aBp
Однако у этого есть несколько проблем, таких как неспособность выполнить инкрементные сохранения.