LINUX.ORG.RU

vim multi-select/edit как в сублиме-текст2

 , ,


0

2

Не секрет, что в закрытом проприетарном платном редакторе на питоне Sopley-Text2 (в котором, кстати, есть vim из коробки: «Vintage mode») весьма неплохо реализовано множественное выделение/редактирование (multi-select editing), т.е. можно зажав Ctrl и кликая по словам/символам независимо от положения в строке по вертикали относительно других выделений - ставить маркеры и потом уже редактировать одновременно.

Конечно, в виме об использовании манипулятора мышь не может быть и речи.

Вопрос: как справляетесь, отцы программирования? Из коробки. А пока отвечаете, представляю вашему вниманию новый plugin:

vim-multiedit : Multi-selection editing for vim, inspired by Sublime Text

    <leader>mi      Add a disposable region before cursor
    <leader>ma      Add a disposable region after cursor
    <leader>mm      Add word under cursor (or current visual selection) as a region

    <leader>mn      Add word under cursor and jump to next occurance
    <leader>mp      Add word under cursor and jump to previous occurrance

    <leader>md      Delete region under cursor
    <leader>mr      Reset all regions
    <leader>ms      Set region under cursor as primary
    <leader>mu      Restore regions from previous use (if available)

    <leader>M       Start editing from the end of the main region
    <leader>C       Start editing in change mode

Скачать по-стариковски.

или поставить в патоген-бандл:

git clone https://github.com/vim-scripts/vim-multiedit ~/.vim/bundle

★★☆

Не понял.
Объясни, пожалуйста, как понять «несколько маркеров» -> «редактирование».
Как (и зачем) редактировать одновременно несколько кусков?

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от Spirit_of_Stallman

Как (и зачем) редактировать одновременно несколько кусков?

Например заменить/отредактировать то, на что нужно писать сложный регексп для substitution для замены в нескольких (многих) местах, когда этому препятствуют сложные условия.

Короче юзкейс известный, думаю ты сталкивался с ним если часто (16 часов в сутки :) ) работаешь с спагетти и прочим текстом.

Короче говоря, на сегодня это практически единственный аргумент, когда саблаймщики могут смело закидывать вимерам, дескать а ваш этот вим так умеет?

Объясни, пожалуйста, как понять «несколько маркеров» -> «редактирование».

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

science ★★☆ ()
Последнее исправление: science (всего исправлений: 1)
Ответ на: комментарий от science

Не убедил. Никак не могу придумать как бы это использовать. Пример в студию!

kardapoltsev ★★★ ()
Ответ на: комментарий от kardapoltsev

Пример в студию!

Официальная дока

It works as a quick substitute for find and replace, or to apply the same sequence of changes to multiple lines simultaneously.

Ну вот у тебя есть в коде много строк со словом pochta. Ты хочешь заменить на email. Берёшь мышь, возишь по экрану, клацаешь на каждом слове. Когда надоест, начинаешь вводить новое слово и оно - вуаля! - заменяется везде в выбранных местах. Короче, :s/pochta/email/g, только для тех, кто не умеет с клавиатурой работать.

schizoid ★★★ ()
Ответ на: комментарий от schizoid

Чем это удобнее команды :s?

Прежде всего, когда написать команду для :s сложно в связи с окружающими условиями (или писать длинную либо несколько раз). Или лень. Мы говорим только о работе с клавиатуры, мышь не рассматриваем вообще.

Суть вима - быстрая автоматизация и эффективная работа при минимальных затратах пальцечасов, верно?
(как бы отвечаю) - Да, это так.

Ну вот, данный плугин (как многие другие, например vim-commentary для комментирования, vim-surround для замены делимитров, gundo.vim для удобного обозрения истории, нерд-три и прочее) предназначен именно для этого - хотя тоже самое можно реализовывать из коробки, но сложнее.

Короче говоря это как S-i при C-v но по горизонтали не привязываясь строго к линейке, в разных местах строки.

science ★★☆ ()
Последнее исправление: science (всего исправлений: 1)
Ответ на: комментарий от science

Пока ты будешь скакать по словам и добавлять их в волшебный буфер, можно несколько раз написать :s/абракадабра/друга_абракадабра/

schizoid ★★★ ()
Ответ на: комментарий от kardapoltsev

Очень жаль, что ты не сумел понять, о чём идёт речь в треде.

schizoid ★★★ ()
Ответ на: комментарий от science

например vim-commentary для комментирования,

Чем он лучше nerd_commenter?

vim-surround для замены делимитров,

Не прижился у меня.

gundo.vim для удобного обозрения истории,

Какой чудный плагин, спасибо.

нерд-три

А еще CtrlP - очень полезная штрука.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Чем он лучше nerd_commenter?

Если честно, я использую одновременно оба. Потому как кое-чего не хватает в первом, что есть во втором и наоборот. В плане поддержки синтаксиса. Кроме того vim-commentary более качественно комментирует, в том плане, что например ставит пробел между символом комментария и самой строкой.

Ну и я особо не разбирался, но как nerd_commenter'ом закомментировать блок? Типа сначала выделить в визуальном режиме и потом уже комментировать?: v}\c<space> ?

Например vim-commentary интуитивно понятно и быстро: \\}

science ★★☆ ()
Последнее исправление: science (всего исправлений: 1)

об использовании манипулятора мышь не может быть и речи

Юзабилити уровня vim: вводить нечто вроде «^xjxjxjxjxjxjxjxjxjxjxjxjxj» вместо того, чтобы выделить мышкой и сделать s/^<tab>//g (в sam или acme). Зато никакой мыши, доа.

anonymous ()
Ответ на: комментарий от anonymous

вместо того, чтобы выделить мышкой

это же руки нужно поднимать с клавиатуры, ты что.

science ★★☆ ()
Ответ на: комментарий от science

Это так сложно, доа. http://plan9.bell-labs.com/wiki/plan9/Mouse_vs._keyboard/index.html

In the experience of many Plan 9 users, using the mouse in Plan 9 for an extended period of time and then going back to using vi in Unix highlights the amount of time you spend watching the screen as you cursor around with hjkl. Having broken out of the hypnosis that Tog describes, I just get frustrated beyond belief. Yes, I am watching the cursor move so I should be occupied, but all I can think is «damnit, if I could just click where I want to go I'd be there by now."

anonymous ()
Ответ на: комментарий от science

Ну и я особо не разбирался, но как nerd_commenter'ом закомментировать блок? Типа сначала выделить в визуальном режиме и потом уже комментировать?: v}\c<space> ?

Или в визуальном режиме, или указав количество строк.

Например vim-commentary интуитивно понятно и быстро: \\}

Ну да тоже не плохо.

andreyu ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.