Блокировка некоторого текста в vim для предотвращения изменений - PullRequest
3 голосов
/ 02 мая 2011

Я ищу способ предотвратить изменение части буфера vim. Я знаю, что можно заблокировать буфер, чтобы предотвратить все изменения внутри, но я хотел бы сделать то же самое только для нескольких строк или абзаца.

Есть идеи, если это возможно?

Ура, V * +1007 *

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Ну, как я знаю, vim не может этого сделать. Текст в буфере vim - это просто «строка», к которой не может быть привязано какое-либо свойство. Таким образом, «только для чтения» может быть только для всего буфера, но не для конкретных символов, хотя emacs может добавлять свойства текста, чтобы позволить некоторым символам в буфере только для чтения.

С другой стороны, если вы действительно хотите что-то отредактировать и сделать так, чтобы это не влияло на содержимое другого буфера. Должен быть альтернативный способ, хотя и не элегантный.

1.создать временный буфер с помощью "setlocal buftype = nofile", вставить текст, который вы хотите редактировать, в этот буфер.
2. показать этот буфер в другом окне (сначала нужно разделить)
3. Отредактируйте временный буфер.
4. Когда вы закроете этот буфер, «объедините» результат с реальным буфером и замените текст, который вы хотите редактировать.

Итак, вам нужно сделать это с помощью связывания ключей и сценариев vim, а не простым способом.

0 голосов
/ 03 мая 2011

Если «защищенная» область текста легко определяется (т. Е. Ее положением в файле или регулярным выражением), вы можете попробовать написать функцию BufWritePre, которая проверяет эту область и выдает ошибку, если она была изменена,Я прибег к этому, когда хотел предотвратить сохранение файла с недопустимой структурой сгиба.

Предположительно, это повлечет за собой сохранение исходного текста в переменной при загрузке файла, что может повлиять на производительность.

Надеюсь, это поможет.

0 голосов
/ 02 мая 2011

Существует плагин с именем узкая область , который редактирует выделенный текст, оставляя нетронутыми остальные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...