2014-03-31 3 views
-1

Итак, я узнаю о vim/vi/ex, и я подумал, что у меня довольно хорошее понимание буферной системы. (theres универсальный буфер, и вы также можете назвать буферы). Я знаю, что в любое время, когда вы используете yank, изменяете или удаляете, содержимое буфера общего назначения написано выше.Работа с vi буферами

Однако мне было поручено использовать команду vi/ex, чтобы удалить последние 2 строки буфера, и я в тупике. Кажется, я не могу найти ответ, обыскав форумы или Интернет в целом, поэтому я подумал, что я попрошу гуру межстраниц помочь вам здесь.

Есть ли способ напрямую изменить содержимое буфера или ответ просто вставить буфер, удалить последние 2 строки, а затем снова вытащить его?

Любая помощь приветствуется.

EDIT: Я хотел бы отредактировать этот вопрос, включив в него вопрос: в чем разница между буфером и регистром?

Первоначально я думал, что они по сути то же самое, но с тех пор узнали иначе.

Мое новое понимание заключается в том, что вещи, которые я раньше называл буферами, на самом деле регистрируются, что имеет больше смысла в соответствии с моими знаниями о компьютерах.

Теперь, я считаю, что буфер - это только текущая копия текста, который вы изменяете. Или, более конкретно, область основной памяти, в которой вы управляете данными. (Так что ответ на мой вопрос на самом деле был бы просто: $ - 1, $ d)

Однако, я столкнулся с противоречивой информацией об этих форумах, которые говорят об обратном, ссылаясь на «регистры» как «Буферы».

Если кто-то может это понять, я был бы очень благодарен.

EDIT: vim help получил все ответы, которые мне нужны, но не могу удалить сообщение. Следует отметить, что есть ответы на вопросы как на этом сайте, так и на многих других, которые проголосовали высоко, но неправильно ссылаются на регистры как буферы.

+2

К 'буфера ', вы имеете в виду' register'? – merlin2011

ответ

3

Я начал писать длинный ответ, но я в конечном итоге решил лом и дать вам ответ, который вы заслуживаете:

:help buffers 
:help registers 
+1

+1 для ответа на длинный, бессвязный и неясный вопрос с короткой и точной ретортой! –

+0

@ codyc4321, не могли бы вы прояснить свою мысль? – romainl

+0

о, так что теперь вы хотите, чтобы люди прояснили LOL! – codyc4321

0

первой очереди, после прочтения вашего вопроса, я уверен, что вы говорили о «буферах» на самом деле «регистров». Разницу между буфером и регистром вы можете найти в помощи vim. (На самом деле эти две вещи совершенно разные понятия)

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

Это не так, вы можете append контент для регистрации, если вы используете A-Z регистр.

Есть ли способ, чтобы непосредственно изменять содержимое буфера (регистр) ... удалить последние 2 строк, а затем восстановить его снова?

Да, есть способы. Вы можете получать и изменять содержимое регистра на @x.Вы можете изменить контент просто на let @a='newValue'.

с вашего примера, если вы хотите, чтобы удалить последние две строки:

:let @a=join(split(@a,'\n')[0:-3],"\n")."\n" 

, то вы можете сделать "ap, чтобы вставить скорректированное содержание регистра a.

Существует встроенная функция setreg(), которая также может изменить значение регистра. проверьте его справочный документ, если вы хотите его использовать.

0

Как вставить буфер, удалить последние 2 строки, а затем снова удалить ?

Секрет заключается в использовании знаков '' и `].

p`]dky'' 

Для получения дополнительной справки обратитесь к разделу:

:h '' 
:h `[ 
Смежные вопросы