Vim: автозамена при вставке или одной командой нескольких символов или слов

Автор Евгений, 31 июля 2013, 09:32:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Евгений

Приветствую участников!

Изучение Vim постепенно продвигается. Сейчас на повестке дня вопрос:

Как настроить vim таким образом, что бы при вставке некоторого количества символов или слов из буфера эти символы или слова сразу же заменялись на другие? Например, русские буквы на латинские, или некоторые слова на другие, причём сразу все, не по одному слову.

Если вышеуказанный вариант невозможен, есть ли возможность заранее подготовить какие-то таблицы автозамены и выполнить массовую автозамену некоей командой; в bash можно "натравить" на файл скрипт и он заменит, но может быть есть какие-то встроенные механизмы у Vim?

Сообщение объединено: 31 июля 2013, 18:12:50

Нашёл решение. За основу взял эту статью: http://www.ibm.com/developerworks/ru/library/l-vim-script-1.

Краткий вывод такой: для организации массовой автозамены нужно создавать файл с расширением .vim и прописывать полный путь к нему в .vimrc.

В файле пишем команды типа:

%s/старый символ или слово/новый символ или слово/g

и так по всем символам, которые надо заменить.

В .vimrc прописываем комбинацию клавиш для выполнения массовой автозамены:

:nmap <нужная комбинация клавиш> :source /полный/путь к файлу с /расширением.vim<CR>

Тогда после копирования в файл нужного текста применяем вышеуказанную комбинацию клавиш и автозамена происходит одномоментно.

Вопрос закрыт, спасибо за внимание (но дополнения приветствуются)!

Punkoivan

Понимаю - некропостинг, но по поиску vim автозамена страница в топе, поэтому:

Поковыряв ман я нашёл другой, более простой способ автозамены и кроется он в команде
:iab
Эта команда используется для подстановки аббревиатур, но какая разница? =)

Поэтому, в ~/.vimrc добавляем строки:

:iab исходное новое

часть моего конфига:

:iab енжинкс Nginx
:iab мыло e-mail
:iab хомяк home
:iab рут root


Всё! теперь без всяких хоткеев на лету работает автозамена. Работает также если текст скопипастить.

Если нужно добавить новое слово (а пока словарь наберётся такая возможность будет нужна) просто в терминале:
echo ":iab text replaced_text" >> ~/.vimrc

Евгений

Спасибо, попробую! Хотя сейчас перешёл на medit - мне достаточно.