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

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

  • автор:

vim-commands

Заметки по командам vim в процессе чтения книги “Vim”.

Основные команды

Передвижение

  • hjkl — передвижение
  • wW bB eE — вперёд[назад][вперёд в конец] на слово, всё кроме пробелов
  • 0 ^ n| $ — первый символ, начало непробельных, n-ый, конец
  • () <> [[]] в начало текущего[следующего] предложения, абзаца, раздела
  • :number numberG — переход на number-строку
  • [count]% — переход на count процент файла
  • » — место последней правки, перед передвижением
  • m[a-z] ‘a — метка, вернуться к метке a

Особые

  • HL — top screen, bottom screen
  • J — соединить следующую строку с текущей
  • K — man page
  • % — перейти дальше к ближайшей скобке, либо перейти к обратной скобке
  • >> << — Убрать/добавить отступ

Переход в insert:

  • iI — insert режим, insert с начала строки
  • aA — append — редактирование после текущего символа, с конца строки
  • oO — добавить строку после, перед текущей перейти в insert
  • sS — subst — удалить символ, строку перейти в insert
  • cС — change — удалить что-то и перейти в insert, удалить до конца строки

Спец. в insert-режиме

  • CTRL-t, CTRL-d — Убрать/добавить отступ

Остаёмся в текущем режиме:

  • rR — заменить один символ, несколько символов подряд
  • xX — удалить символ, предыдущий символ
  • dD — удалить что-то, удалить до конца строки

Замечания:

  • Все команды можно повторять, ставишь перед ней цифру. При этом если команда, переходит в insert, то повторение срабатывает после выхода из него.
  • Например, можно ввести iao и получить сразу много одинаковых строк. Также с остальными.
  • r — заменить все буквы на одну, но не больше длины строки, c xd — если вводишь больше символов чем встроке, меняет всю строку, что логично.
  • sc — не повторяют строки, но повторяют удаление на несколько сиволов или строк
  • для команд cd двойное нажатие применяет её ко всей строке
  • c и d и y — эти команды работают с любыми перемещениями:
    • cH cL c+ — верх, низ, следующей строки
    • 2c) — второе преложение изменить
    • d/pattern — до шаблона patter
    • c/n — до следующего вхождения
    • cG — конца файла
    • d13G — 13 строки

    Вставка и копирование:

    • pP — вставить после, до
    • yY — скопировать что-то, строку ( yy = Y )

    Отмена

    • uU — отмена, возврат состояния строки, если курсор не перемещался на другую
    • ^R — отмена отмены

    Прокрутка экрана

    • ^f,^d;^b^u — вперёд;назад экран, полэкрана
    • zENTER z. z- — текущая строка вверх, середина, вниз без смещения курсора

    Команды из ex

    • :6 — перейти на строку 6

    Команды

    • delete d — удалить
    • move m — перемещение
    • copy c t — копировение

    Примеры

    • :3,18d — удалить строки
    • :160,224m23 — переместить строки с 160-224 после 23 строки
    • :160,224t23 — скопировать строки с 160-224 после 23 строки
    • := :,= :/pattern/= — номер всех, текущей, найденной строки
    • :[. % $ +-][#p] — текущая, все, последняя, следующие или предыдущие строки вывести
    • . +20d — удалить эту и следующие 20 строк
    • :226,$m.-2 — поместить строки с 226 до конца перед 2 строками текущей
    • :-,+t0 — точки необязательны (копирование трёх строк в начало файла)
    • :100;+5 p — вывести строку после сотой + 5 от неё
    • :1,3d | s/thier/their/ — | в качестве разделителя команд, удаляем строки с 1 по 3 и производим замену в текущей
    • :[230,$]w [>>] new.file — сохранить новую версию [c 230 до конца] в [добавить] другом файле
    • :r filename — считать файл в текущий буфер

    Визуальный режим

    все команды в v

    • V — выделить строки
    • CTRL-V — выделить блок
    • oO — начать выделять с другой стороны
    • gv — снова выделить тоже самое
    • wW — вперёд на слово
    • a[wsp] — всё слово, предложение, абзац

    Как выделить весь текст в Vi / Vim?

    использование инструмента VI для редактирования конфигурационных файлов.

    Как я могу выбрать весь текст в файле (около 1000 строк), скопировать его, а затем вставить в Google Docs?

    12 ответов

    самый простой и быстрый способ-это использовать: : % y + , а затем перейти к Google Docs (или где) и вставить. Пояснение:

    • % сослаться на следующую команду для работы со всеми строками
    • y дергать эти строки
    • + копировать в системный буфер обмена

    другой способ — g g » + y G но вы, вероятно, признать, что выше быстрее и проще.

    многие дали ответы также дергать выбор, который я не искал.

    Я использую ggVG для этой цели (нужно побежаться на нормальном режиме). Это команда только выделяет весь текст в документе.

    Я даже переназначен Ctrl+A для этой цели, так как мне действительно не нужно увеличивать целое число с помощью ярлыка (по умолчанию Ctrl+A карта).

    как раз добавьте это в ваше .vimrc :

    Это <esc> во-первых, чтобы убедиться, что пользователь находится в нормальном режиме.

    можно использовать cat file , а затем выберите output, скопируйте и вставьте, если вам нужно вставить его в свой браузер.

    для vi так можно выделить весь текст и записать его в новый файл:

    теоретически это должно работать как на Linux, так и на Windows — я пробовал его на Mac, но он не работает.

    использовать ggVG. введите «gg», чтобы перейти в верхней части теста Затем введите VG.

    Записки программиста

    Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать работу над чем-то и не знаешь, как подступиться. Так что я решил не ломать голову над тем, о чем будет первая запись в этом блоге, а просто выложить небольшую шпаргалку по текстовому редактору Vim.

    Шпаргалка эта уже не первый месяц хранится у меня в

    /txt/vim.txt. За это время я успел составить довольно объемный справочник по основным командам Vim. При желании вы можете начать свое обучение работе с Vim с этого поста.

    /.vimrc
    Можно редактировать файлы через сеть, например
    :e <scp|ftp|ftps>://user@host/path/to/the/file.txt
    :Ex или :e ./ — файловый менеджер

    == Основы ==
    hjkl перемещение в разные стороны
    i режим вставки
    I добавление в начало строки
    a режим добавления
    A добавление в конец строки
    o добавить строку сразу за текущей
    O добавить строку перед текущей
    R писать поверх имеющегося текста
    u, :u[ndo] отмена предыдущего действия (undo)
    CTR-R, :red[o] отмена отмены предыдущего действия (redo)
    dd вырезать (удалить) строку
    cc удалить и начать редактирование
    yy копировать строку
    p вставить из буфера обмена
    <n>d удалить n+1 строку
    <n>y скопировать n+1 строку
    ESC перейти в режим просмотра
    DEL удалить следующий символ
    :<n> перейти на строку #n
    % перейти к парной скобке
    :e **/filename.c редактировать файл (с поиском по имени)
    :w [fname] записать изменения
    :wa сохранить изменения во всех файлах
    :q выйти из редактора
    :q! выйти из редактора, не сохраняя изменения
    :color <name> выбор цветовой схемы. цветвые схемы:
    /usr/local/share/vim/vim72/colors/*.vim
    :pwd текущий каталог
    :cd [path] перейти в другой каталог
    :!команда выполнить команду — man, git, и так далее
    стрелочками веерх и вниз можно автодополнять
    команды и искать по истории
    CTR+p или CTR+n автоматическое дополнение текста
    (в режиме редактирования)
    CTR+r,=,<expr> вставить выражение, например 5*2 — 3
    (в режиме редактирования)
    CTR+u, CTR+d Page Up / Page Down
    CTR+y, CTR+e Перемотка вверх/вниз без движения курсора

    == Подсветка синтаксиса ==
    :syntax on включить подсветку
    :syntax off выключить подсветку (по умолчанию)

    == Перенос строк ==
    :set wrap разрешить word wrap (по умолчанию)
    :set nowrap запретить word wrap

    == Печать ==
    :ha[rdcopy] распечатать документ
    :set printoptions=duplex:off отключить двустороннюю печать

    == Сворачивание ==
    zc свернуть блок
    zo развернуть блок
    zM закрыть все блоки
    zR открыть все блоки
    za инвертирование
    zf см :set foldmethod=manual
    :set foldenable включить свoрачивание
    :set foldmethod=syntax сворачивание на основе синтаксиса
    :set foldmethod=indent сворачивание на основе отступов
    :set foldmethod=manual выделяем участок с помощью v и говорим zf
    :set foldmethod=marker сворачивание на основе маркеров в тексте
    :set foldmarker=bigin,end задаем маркеры начала и конца блока

    == Маркеры ==
    ma установить локальный маркер a
    mB установить глобальный маркер B
    `c перейти к локальному маркеру c
    `0 вернуться на позицию, на которой закончили
    работу при закрытии vim
    :marks просмотр маркеров
    set viminfo=’1000,f1 маркеры пишутся в

    /.viminfo, восстанавливаясь
    при следующем запуске vim. маркер " хранит
    последнюю позицию курсора в файле
    == Сессии ==
    mksession file.session сохранить текущую сессию
    source file.session восстановить ранее сохраненную сессию

    == Макросы ==
    qa записать макрос с именем a
    q в режиме записи макроса: закончить запись
    @a выполнить макрос с именем a
    @@ повторить последний макрос

    == Регистры ==
    "ayy скопировать строку в регистр a
    "bdd вырезать строку и поместить в регистр b
    "С2d вырезать три строки и дописать в конец
    регистра C
    :reg [name1][name2][. ] просмотреть содержимое регистров

    == Выделение ==
    v + hjkl выделение текста
    SHIFT + v выделить строку
    CTR + v выделение прямоугольника
    p вставить
    y копировать
    d удалить
    gu к нижнему регистру
    gU к верхнему регистру

    == Отступы ==
    [#]> сдвинуть выделенное вправо
    [#]< сдвинуть выделенное влево
    [#]>> сдвинуть строку вправо
    [#]<< сдвинуть строку влево
    set tabstop=# для табуляции используется # пробелов
    set shiftwidth=# в командах отступа используется # пробелов
    set [no]expandtab заменять ли табуляцию на соответствующее
    число пробелов

    == Поиск и замена в файле ==
    /Выражение поиск выражения в файле
    \cВыражение поиск без учета регистра
    n следующее совпадение
    N предыдущее совпадение
    :%s/foo/bar/gi замена строк, см http://eax.me/regular-expr/

    == Поиск по всему проекту ==
    :vimgrep /EXPR/ **/*.c поиск по регулярному выражению
    :copen показать все найденные места
    :close скрыть все найденные места
    :cn переход к следующему результату
    :cp переход к предыдущему результату

    == Нумерация строк ==
    :set number включить нумерацию строк
    :set nonumber отключить нумерацию строк

    == Работа с вкладками (a.k.a табами) ==
    :tabnew [fname] создать таб
    :tabs вывести список табов
    :tabn следующий таб
    :tabp предыдущий таб
    <n>gt перейти на таб #n
    gt следующий таб
    gT предыдущий таб
    :tabm +1 переместить таб вперед на одну позицию
    :tabm -1 переместить таб назад на одну позицию
    :tabm 2 переместить таб на заданную позицию
    (нумерация начинается с нуля)

    == Работа с окнами ==
    :split горизонтальное разбиение
    :vsplit вертикальное разбиение
    Ctr+W, затем
    с закрыть окно
    +- изменение высоты текущего окна
    <> изменение ширины текущего окна
    = установить равный размер окон
    hjkl или стрелочки перемещение между окнами

    == Проверка орфографии ==
    mkdir -p

    /.vim/spell
    wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
    wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
    wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
    wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl

    :set spell spelllang=ru,en включить проверку орфографии
    :set nospell выключить проверку орфографии
    ]s следующее слово с ошибкой
    [s предыдущее слово с ошибкой
    z= замена слова на альтернативу из списка
    zg good word
    zw wrong word
    zG ignore word

    == Работа с кодировкой ==
    e ++enc=<имя кодировки> Редактирование файла в . кодировке
    w ++enc=<имя кодировки> Сохранить файл в новой кодировке
    set fileencodings=utf-8,koi8-r Список автоматически определяемых
    кодировок в порядке убывания
    приоритета

    == Другое ==
    :set [no]wildmenu При авто-дополнении в командной строке над
    ней выводятся возможные варианты
    :set list Отображать табуляцию и переводы строк
    q: История команд
    . Повторение последней команды

    Более подробный материал об использовании текстового редактора Vim вы найдете в книге Изучаем редакторы vi и Vim, 7-е издание. Книга доступна как в бумажном, так и в электронном формате.

    На этом пока все. Думаю, я буду время от времени редактировать эту шпаргалку, так что следите за PS в конце следующих постов.

    Дополнение: Также вас может заинтересовать заметка Используем Vim в качестве IDE для Erlang. Несмотря на название, многое из нее будет справедливо и в отношении других языков. Например, того же C.

    Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.

    Как отсюда выйти: шпаргалка по Vim

    Обложка: Как отсюда выйти: шпаргалка по Vim

    Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.

    ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.

    Ну вот, опять. Склонив голову от стыда, вы запускаете очередной терминал, чтобы исполнить команду killall vim и продолжить заниматься своими делами.

    С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).

    Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim .

    В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).

    Основы

    Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.

    Все команды чувствительны к регистру и должны выполняться вне режима insert.

    Выход из Vim

    Выход без сохранения изменений:

    Как запомнить: quit dammit! (закройся, чёрт возьми!)

    Выход с сохранением изменений:

    Как запомнить: write to disk and quit

    Навигация

    Для перемещения по открытому файлу используйте стрелки.

    Перемещение на строку 285:

    Поиск слова «import»:

    Изменение текста

    Вставка текста там, где стоит курсор:

    Вставка текста в конце текущей строки:

    Выход из режима редактирования (возврат в стандартный режим):

    Выделение текста

    Переход в визуальный режим:

    Для выделения текста используйте стрелки.

    Выход из визуального режима:

    Копирование, удаление, вставка

    Копирование выделенного текста в буфер:

    Удаление выделенного текста:

    Копирование текущей строки в буфер:

    Как запомнить: yank yank

    Копирование трёх строк, включая текущую, в буфер:

    Удаление текущей строки и помещение её в буфер:

    Как запомнить: delete delete

    Удаление 5 строк, включая текущую:

    Вставка из буфера перед текущей строкой:

    Вставка из буфера после текущей строки:

    Отмена и восстановление последнего изменения

    Отмена последнего изменения:

    Восстановление последнего отменённого изменения:

    Отмена двух последних изменений:

    Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.

    Работа с файлом

    Открытие файла index.html вместо текущего:

    Сохранение текущего файла:

    Как запомнить: write to disk

    Сохранение файла с изменённым именем, например, changes.txt:

    Поиск и замена

    Поиск и замена всех вхождений строки в файле:

    Поиск и замена с запросом подтверждения замены:

    Подсветка синтаксиса и отступы

    Включение подсветки синтаксиса:

    Включение автоматических отступов:

    Увеличение отступов нескольких строк при выделении их в визуальном режиме:

    Вкладки

    Открытие server.py в новой вкладке:

    Переход на вкладку справа:

    Переход на предыдущую вкладку слева:

    Как запомнить: tab previous

    Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq .

    Разделённый экран

    Открытие templates/base.html в режиме вертикального разделения экрана:

    Как запомнить: vertical split

    Открытие shared.js в режиме горизонтального разделения экрана:

    Как запомнить: the ’default’ horizontal split

    Перемещение между «частями» экрана:

    Для закрытия экрана переключитесь на него и используйте команду :q или :wq .

    Настройка Vim: файл .vimrc

    Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.

    Например, добавление этих строк в

    /.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:

    Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.

    Полезные ресурсы

    Вот ещё несколько полезных материалов для изучения Vim:

    А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!

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

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