Перейти к содержимому

Vim как выделить текст

  • автор:

vim. как выделить слово и перемещаться на следующее одинаковое слово выделяя его тоже а позже заменить все разом?

stackoverflow мой дорогой) Как сделать сею команду? у меня выделяя слово курсор перемещаясь на другое слово тянет выделение по строкам вслед за собой выделяя все на пути. А вроде одну команду нашел, но она просто выделяет как бы маркером их, но ничего не делает с ними, будто просто показывает одинаковые слова но без возможности последующего форматирования

Отслеживать
задан 21 окт 2020 в 9:57
307 1 1 золотой знак 2 2 серебряных знака 11 11 бронзовых знаков
А что за команды, как вызываете? очень сложно угадать по таким описаниям.
21 окт 2020 в 10:47

vim. в нем пытаюсь найти такую команду. к примеру звездочка не помогает — просто перемещается к похожему, мне нужно выделение с последующим форматированием одинаковых слов или ‘/’ тоже самое, обычное веделение vaw или viw выделяют но как дальше переместиться к одинаковому слову без выделение всего что попадет между ними не знаю

21 окт 2020 в 11:05

а что такое «последующее форматирование»? возможно, Вы просто не знаете о команде точка . , которая повторяет последнюю команду редактирование. И в этом случае / + n / N + . сделают все что нужно

21 окт 2020 в 12:01

снял специально для вас гифку, посмотрите если не сложно пожалуйста. Только мне нужно как это сделать при помощи vim. На данной гифке урок с интернета

21 окт 2020 в 13:01

похоже этот плагин как раз делает то, что нужно. github.com/mg979/vim-visual-multi Если это можно выделить столбиком, то можно через блочный режим. Я же обычно пользуюсь точкой.

21 окт 2020 в 13:14

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Похоже этот плагин как раз делает то, что нужно — mg979/vim-visual-multi

Если это можно выделить столбиком, то можно через блочный режим. Вначале через Ctrl + v переходим в режим блочного выделения, потом стрелками вниз-вверх выделяем столбик и переходим через Shift + i в редактирование. Редактируем обычным способом (будет редактироваться только одна строка). После нажатия Esc все остальные строки отредактируются теми же командами. Ключевой момент, что они отредактируются «теми же командами», поэтому, если это команда, которая меняет по контексту, то оно и будет так.

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

Допустим, нужно все слова test заменить на data кроме комментариев. Пишем / t e s t enter , видим выделенный текст. жмем i или любую другую команду редактирования и правим как надо (в нашем случае лучше наверно c i w и ввести новый текст). После этого жмем Esc А теперь, главное аккуратно — n — переходим к следующему найденному тексту и если он «правильный», жмем . .

Как только это осваивается, другие редакторы просто отдыхают. Ведь / умеет искать регулярками.

  • ещё почитать о точке — https://dev.to/iggredible/vim-use-dot-command-to-save-keystrokes-1c96
  • почитать о других плагинах и возможностях — https://stackoverflow.com/questions/11784408/vim-multiline-editing-like-in-sublimetext

unixforum.org

Выделение всего текста в режиме редактирования

и другие vi-подобные редакторы

Модератор: /dev/random

3 сообщения • Страница 1 из 1
ArkanJR Сообщения: 1164 Статус: Профан

Выделение всего текста в режиме редактирования

Сообщение ArkanJR » 13.07.2013 15:18

Подскажите, пожалуйста, как выделить весь текст в GVIM с помощью комбинации клавиш в режиме вставки, возможно ли сделать работу данной комбинации клавиш при включенной русской раскладке клавиатуры?

Vim как выделить текст

Выбрать синтаксис редактируемого файла

:set ft=ruby

Способы перейти в режим вставки

  • i — вставить текст слева от текущего
  • I — вставить текст в начало строки
  • a — вставить текст справа от текущего символа
  • A — вставить текст в конец текущей строки
  • o — создать новую строку под текущей
  • O — создать новую строку над текущей
  • C — заменить всё до конца строки
  • r — заменить 1 символ
  • 3 s — удалить 3 символа и перейти в режим вставки
  • c i W — заменить большое слово под курсором
  • c i » — заменить текст между кавычками
  • c i ( — заменить текст между круглыми скобками
  • g i — перейти к последнему месту, где производилось редактирование

Передвижение по тексту

  • f x — Передвинуть курсор вперед к следующему вхождению символа х в текущей строке
  • t x — Передвинуть курсор вперед к следующему вхождению символа х в текущей строке и установить курсор перед символом x
  • F x — Передвинуть курсор назад к предыдущему вхождению символа х в текущей строке
  • w — Передвинуть курсор вперед на одно слово
  • b — Передвинуть курсор назад на одно слово
  • 0 — Передвинуть курсор на начало текущей строки
  • ^ — Передвинуть курсор на первый символ в текущей строке
  • $ — Передвинуть курсор на конец текущей строки
  • * — начать поиск по слову под курсором
  • # — начать поиск по слову под курсором в обратном порядке
  • w — перейти к следующему слову
  • W — перейти к следующему большому слову (тому, что разделено пробелом)
  • b / e — перейти к началу/концу текущего слова
  • B / E — перейти к началу/концу текущего большого слова
  • g g / G — перейти в начало/конец файла
  • % — перейти к парной скобке
  • < / >— перейти к следующему/предыдущему параграфу
  • ‘ . — перейти к последнему месту, где производилось редактирование
  • 4 d d — удалить 4 строки
  • 3 x — удалить 3 символа
  • D — удалить от текущей позиции до конца строки

Способы сложного выделения текста

  • v % — когда курсор установлен на одной из скобок — выделит всё до её пары.
  • v i b — выделить всё между двумя ближайшими к курсору круглыми скобками
  • v i B — выделить всё между двумя ближайшими к курсору фигурными скобками
  • v i » — выделить всё между двумя ближайшими двойными кавычками
  • v i ‘ — выделить всё между двумя ближайшими одинарными кавычками
  • g g V G — выделить весь файл
  • Ctrl + v — выделять прямоугольником

Заменить все вхождения ‘old’ на ‘new’

:%s/old/new/g

Заменить все вхождения ‘old’ на ‘new’ с запросом подтверждения

:%s/old/new/gw

Удалить все строки, не содержащие ‘string’

:v/string/d

Удаление всех пустых строк в VIM

Сокращения для быстрого создания закомментированных участков кода

:ab #b /************************************************* :ab #e *************************************************/ 

Заставить вим не раскрывать табы при редактировании makefile

# vim: set tabstop=4 shiftwidth=4 noexpandtab:

Открыть файл, но предопределить синтаксис редактора

$ vim "+set filetype=lisp" file.rb 

Отправить весь буфер вима в grep

:%!grep data 

Редактировать последний изменённый файл

$ vim `ls -t | head -n1` 

Убрать символ переноса строки ^M в файле из windows двумя способами. ^M вводится как Ctrl-V Ctrl-M.

:set ff=unix :w :%s/^M//g 

Заменить «foo» на «bar» в строках 127-215

:127,215s/foo/bar 

С текущей строки до конца файла объеденить все строки в одну

Оба вида записи указывают на весь файл целиком

Начиная с текущей, удалить в следующих 21-ой строках те, что содержат слово foo

. +21g/foo/d 

Начиная с текущего места и до конца файла удалить все строки что НЕ содержат «bar»

. $v/bar/d 

Все строки, что содержат «foo» перенести в конец файла, в том же порядке, в каком они встречаются по документу

:%g/foo/m$ 

Все строки, что начинаются с пробела, объединить с предыдущими

:%g/^ /-1j 

Во всех строках содержащих «foo», заменить «bar» на «zzz»

:%g/foo/s/bar/zzz/g 

Между метками ‘a’ и ‘b’, объединить строки, что содержат ‘foo’ с теми что идут после них.

:'a,'bg/foo/j 

Вставка содержимого из другого места

  • :r file.txt — прочитать и вставить содержимое файла ‘file.txt’ в место под курсором
  • :0r file.txt — вставить файл в начало документа
  • :$r file.txt — вставить файл в конец документа
  • :r !uptime — вставить вывод команды в место под курсором

Дописать содержимое буфера в конец другого файла

:w >>~/file.txt 

Отсортировать весь файл с помощью sort

:%!sort 

увеличить/уменьшить число под курсором на 1

Ctrl + a
Ctrl + x

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

Объединить текущую строку со следующей

В режиме вставки, комбинация Ctrl + R позволяет вставлять некоторые полезные вещи:

  • » — последний удалённый/скопированный текст
  • % — текущее имя файла
  • * — содержимое буфера обмена (X11: primary selection)
  • + — содержимое буфера обмена
  • / — последний запрос поиска
  • : — последняя команда
  • . — последний вставленный текст
  • — — последний маленький удалённый текст (меньше строки)
  • =5*5 — вставит 25. Мини калькулятор

Дополнить слово в режиме вставки

Ctrl + p
Ctrl + n

Путешествие по результатам поиска.
Переход будет осуществляться по местам, которые были указаны явно: — поиск с помощью / — переход g g , G , [\d] G Так же будут открываться другие файлы, где осуществлялись подобные действия.

Ctrl + o
Ctrl + i

Работа с сессиями

:mks sessionname " или принудительно: :mks! sessionname 
$ vim -S sessionname

Работа со встроенным файловым менеджером. Вызвать его можно командой :Explore или попытавшись открыть на редактирование каталог :sp ./

  • — — перейти на каталог выше
  • m f — пометить файл
  • D — удалить помеченые файлы. Удалит файл под курсором, если помеченых нет
  • R — переименовать файл под курсором
  • d — создать новый каталог
  • % — создать новый файл

отправить текущий файл на исполнение питоном

:!python % 

работа с несколькими окнами

  • Ctrl + w v — разбить окно по вертикали
  • Ctrl + w s — разбить окно по горизонтали
  • Ctrl + w w — переключиться между окнами
  • Ctrl + w — перейти к окну левее, ниже, выше, правее
  • Ctrl + w < ,+,->— изменить размеры текущего окна
  • Ctrl + w q — закрыть окно

Проставить отступы для всего документа

Для того чтобы это работало — надо добавить в .vimrc следующую строку:
filetype plugin indent on

Копируем содержимое строк выше/ниже курсора, не покидая режима вставки

  • Ctrl + y — вставить символ над курсором
  • Ctrl + e — вставить символ под курсором

Отбросить правки до последнего сохранённого состояния

  • Q — войти в ex-режим
  • :vi — выйти из ex-режима

Удалить все строки что не содержат слова «git»

:v/git/d :g!/git/d 

Для всех строк, что содержат слово git добавить в начало ‘>>’ и в конец ‘ :g/git/norm I>> ctrl + v esc A

  • 2-3 — habrahabr.ru
  • 2-5, 16-25, 27, 29-38 — stackoverflow.com
  • 6-8 — xtips.ru
  • 9 — xtips.ru
  • 10 — citkit.ru
  • 13 — habrahabr.ru
  • 15 — chesser.ru
  • www.rayninfo.co.uk — лучшие подсказки по vim
  • vimdoc.sourceforge.net — документация по vim онлайн
  • vim.wikia.com
  • vimbits.com — Куча трюков из vimrc
  • bytefluent.com — просмотр и составление цветовой схемы для vim
На главную По любым вопросам: zendzirou@gmail.com
Исходный код сайта: gh:najomi/najomi.org
Данные: gh:najomi/data

Как в текстовом редакторе vim выделять текст?

Нужно иметь возможность выделять текст для того чтобы в последующем можно было вырезать его в отдельный файл. В sublime text такое делается с помощью зажатой кнопки shift и ctrl, а как в vim?

  • Вопрос задан более трёх лет назад
  • 22372 просмотра

Комментировать
Решения вопроса 1

nonlux

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

Выриант 1:
— Жмем v (vim переходит visual mode, выделяет все от текущей позиции курсора)
— двигаем курсор ( можно стрелочками, можно hjkl, можно web%$ как угодно)
— нажимаем y

Вариант 2:
Если речь идет о строках, надо решить эту проблему

Просто я допустим захлотел скопировать 10, а скопировал 11, как без выделения я это пойму без вставки, наверное что никак

— набираем :set relativenumber
— определяем сколько строк надо скопировать по нумерации строк слева (допустим 43)
— нажимаем y43y

Профит
P.S. копировать можно не только строки
можно слова yw
можно от текущей позиции до конца строки y$
можно от начала блока до его конца y%

Вариантов много и каждый д%#@, как хочет.

Ответ написан более трёх лет назад
Нравится 6 5 комментариев

KolesnichenkoDS

Даниил Колесниченко @KolesnichenkoDS

если нужно выделять строки целиком, есть режим V (Shift + v)
после этого можно, например, набрать 10j и выделится всё на десять строк вниз
просто relativenumber не всем подходит, я его не переношу, например
а ещё для копирования небольших методов незаменима комбинация vip, выделяющая «абзац» (то есть между пустыми строками)
так что vipy скопирует абзац
p — вставить после курсора
[p — вставить перед курсором

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *