копирование частичных строк в VI

есть много разных способов, которыми можно дергать полные одиночные / несколько строк. Есть ли способ, которым мы можем скопировать частичные строки в vi, например, всего 10 символов строки.

8 ответов


Я бы предположил, что наиболее общей долевой янки:

yaw: дернуть слово курсор в настоящее время в
2yaw: потяните слово курсором в текущий момент и следующий (всего 2 слова)
ya(: дерните соответствующие круглые скобки, содержащие курсор
yf.: дернуть от курсора к следующему .
y$: янки от курсора до конца строки

любые клавиши движения могут быть использованы.


можно сделать yдвижение, поэтому для 10 символов:y10l янки 10 символов из (и в том числе) текущей позиции курсора


вырезать и вставить:

поместите курсор туда, где вы хотите начать резку.

  1. пресс v для выбора символов (прописные или V выбрать все линии).
  2. переместить курсор в конец того, что вы хотите вырезать.
  3. пресс d вырезать (или y копировать).
  4. переместить туда, куда вы хотели бы вставить.
  5. пресс P вставить перед курсором, или p вставить после.
  6. копирование и вставка выполняется с теми же шагами, за исключением шага 4, где вы нажмете y вместо d:

d = удалить = вырезать

y = янки = копия

ресурс: vim.wikia.com: копировать, вырезать и вставить


Я предпочитаю просто нажать клавишу v, а затем с помощью клавиш курсора переместить ваш выбор. Затем нажмите клавишу y, когда вы удовлетворены, чтобы дернуть выбор.


вы также можете сделать

yt<char> - tank 'till char - i use that a lot

or y/<pattern>/ - yank until pattern

конечно, с курсором в начале строки введите:

y10l

это тянет 10 символов вправо. Если вам нужно сделать это повторно по какой-то причине, просто добавьте это временное сопоставление kep:

:noremap ,m ^y10l

который будет дергать первые 10 символов строки каждый раз, когда вы нажимаете ,m


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

" beginning of line
C-v
" up-down move 10j or 5k
10l
" copy & paste
y
p 

Подробнее см. wiki


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

использовать :set mouse=a включить поддержку мыши. Затем выберите любые нерегулярные текстовые блоки с помощью мыши, а затем нажмите y