2013-08-19 7 views
1

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

\begin{tabular}{|l|l|l|} 
\hline 
Foo bar bla & blabar & sdf \\ 
\hline 
[table content] 
\end{tablular} 

, где все элементы в первой строке должны получить \textbf{} тег.

\begin{tabular}{|l|l|l|} 
\hline 
\textbf{Foo bar bla} & \textbf{blabar} & \textbf{sdf} \\ 
\hline 
[table content] 
\end{tablular} 

мой макрос выглядит следующим образом:

^ 
qq 
i 
\textbf{<ESC> 
f& 
h 
i 
}<ESC> 
ww 
q 
[email protected] 

на последнем пункте я не получаю закрывающую скобку, потому что больше нет &. как я могу прыгать с vim до следующего появления & или \\?

ответ

2

Вместо:

f& 

вы могли бы сделать поиск:

/\v [&\\] 

, который будет посадить Вас на пространство перед &и\, готов сделать:

i} 

\v означает «очень волшебный» и позволяет нам сэкономить \.

+0

это требует от пользователя, чтобы узнать, сколько раз (отсчет '& или \\') он/она должен повторить макрос. иначе это может повлиять на другие строки. – Kent

+0

@kent, вы правы в принципе, но OP использует макрос для обертывания одного «элемента» и выполняет его 'n' раз. Ваш ответ более общий (и, следовательно, возможно, лучше), но я считаю, что мой ответ немного более актуальен. – romainl

1

вы могли бы использовать :s вместо макроса:

s/\(.*\)\\\\/\='\\textbf{' . substitute(submatch(1),'&','} & \\textbf{','g') . "}\\\\"/