2012-02-23 4 views
3

Я начал работать над огромным PHP-приложением, имеющим тысячи строк кода в каждом файле, с множеством огромных блоков, классов и функций, существующих в одном файле. Я не единственный разработчик, работающий над этим, поэтому я не могу реорганизовать!VIM: Уважать только текущий кодовый блок

Я пробовал использовать плагин «Список тегов», но это действительно не помогает. Есть ли способ, чтобы VIM уважал только конкретный блок кода и игнорировал остальную часть файла? Я надеюсь на некоторые или все из этих функций:

  1. Включить нумерацию строк только для текущего блока кода, начиная с 1 на линии, содержащее отверстие {, и не показывая нумерации строк, предшествующие его или после закрытия }.
  2. Поиск с / будет ограничен только этим блоком.

Я думаю по линиям выбора текущего блока и редактирования его в новом буфере при включении режима, а затем заменяя существующий блок отредактированным блоком при выходе из режима. Однако у меня возникают проблемы с реализацией этой функции. Моя текущая версия такова:

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 

Однако это имеет ряд проблем, таких как невозможность выполнения дополнительных сейвов.

+1

См. Http://stackoverflow.com/questions/2921752/limiting-search-scope-for-code-in-vim – kikuchiyo

+0

Для ограниченного поиска функций: http://drchip.0sites.net/astronaut/vim/index .html # FUNCSRCH –

+0

@kikuchiyo: Это полезно для случайного поиска, но утомительного для работы в блоке. Поэтому желание иметь отдельный буфер для интересующего блока. – dotancohen

ответ

2

Я был бы очень удивлен, если Vim позволит вам указать нумерацию строк.

This plugin (и 1 или 2 аналогичных варианта IIRC) позволяет визуально выбирать регион вашего текущего файла, работать с ним в другом буфере и возвращать его обратно в исходный файл на :w.

+0

Спасибо, эти плагины выглядят так, как будто они могут удовлетворить мою потребность. – dotancohen

1

Даже если это не то решение, которое вам нужно, я думаю, что следующее решение поможет вам решить вашу проблему.

Вы можете использовать phpfolding plugin, который складывает на PHP синтаксис (функции, классы, методы, PHPDoc ...)

Вы можете выбрать раз нажав v$ над закрытой складкой и выполнить все, что вы хотите с :whatever , Например, :s/this/self/g, чтобы заменить все this на self в складку. Когда вы нажимаете :, vim автоматически добавит '<,'>, чтобы обозначить следующую команду, это только для визуально выбранного текста.

+0

Спасибо. Я уже много раз сгибаю. – dotancohen

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