5

Предположим, у меня есть следующий текст (курсор находится в середине первого слова «начало».'

blah blah blah blah stuff stuff stuff
\\\begin{tabular}
{
|p{0.25\textwidth}
|p{0.2\textwidth}
|p{0.5\textwidth}
|}
\hline
Item & Type & Notes\\\hline
Text text text text text text text text &
Text text text text text &
Text text text text text text text text text text text text text text text text text
  text text text text text text\\\hline

Installation instructions &
.txt / .html / TBD &
Installation help should be conspicuous but not the central item\\\hline
\end{tabular}
blah blah blah more stuff more stuff

Я хочу вырезать стол и переместить его в другое место. Линии на самом деле намного длиннее, поэтому они оборачиваются несколько раз, и я не могу легко определить, сколько линий я хочу отрезать.

Я набираю d 2 / a r } / e для удаления до тех пор, пока второе совпадение «ar}» не остановится на «e» конца шаблона.

Но это схватывает от середины слова «начало» до конца, где я хочу сократить. Я хотел бы получить полные строки, и я чувствую, что должен быть ярлык для этого в менее чем 6 нажатий клавиш. Я не использую Latex-VIM, потому что мне не нравится моя стандартная установка GVIM в Windows, поэтому нет, насколько я знаю, я не могу (насколько я знаю) легко перейти от \begin to \end . Я бы хотел быть неправым в этом.


Да, этот вопрос потенциально является пересечением сайтов StackExchange, включая Tex, StackOverflow и Unix. Не стесняйтесь предложить лучший сайт, чтобы спросить это.

2 ответа2

5

С помощью команды Ex:

:,/\\e/d

Сломать:

  • Структура команды Ex :{range}command{address} .
  • Можно использовать номера строк, метки или шаблоны поиска, чтобы ограничить диапазон, здесь мы начинаем с текущей строки, обычно a . но его можно пропустить, как здесь, и мы заканчиваем сопоставлением с шаблоном \end .
  • Мы d далить строки в этом диапазоне.

С комбинацией поиска и контекстных меток:

/\\e<CR>
d''

Сломать:

  • Поиск \e .
  • d далить отсюда к линии предыдущей позиции курсора.

В визуальном режиме:

v/\\e<CR>
V
d

Сломать:

  • Визуально выберите отсюда до \e .
  • Переключиться на визуальный линейный блок.
  • d далить линии в селекции.

Изменение вышеуказанного метода с помощью команды Ex вместо команды нормального режима:

v/\\e<CR>
:'<,'>d

Сломать:

  • Визуально выберите отсюда до \e .
  • Войдите в режим командной строки с помощью : диапазон '<,'> будет вставлен автоматически.
  • d далить линии в селекции.
2

Это одна из функций, которую вы получаете с плагином matchit, частью стандартного дистрибутива vim. Для тестирования сделайте это в интерактивном режиме; если вам это нравится, то вы можете сделать это из вашего файла vimrc:

:runtime macros/matchit.vim
:filetype plugin on

После этих двух команд (в интерактивном режиме или во время запуска как часть вашего файла vimrc)

:e foo.tex

а затем, поместив курсор в любом месте на \begin{tabular} , используйте V% чтобы выбрать всю среду. Я не уверен, будете ли вы считать это ошибкой или функцией, но это будет включать в себя целые строки, что означает, что вы получите «\\» в начале.

Это также должно правильно обрабатывать вложенные среды и закомментированные строки.

По совпадению, сопровождающий matchit.vim такой же, как и сопровождающий стандартного ftplugin для tex.

:help matchit-install
:help :filetype-plugin-on

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .