PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты


А теперь по порядку что тут такое происходит
  1. Печатаем какую-то строку в режиме insert (i)
  2. Переходим в режим normal (Esc) устанавливаем курсор на нашу строку и делаем так yy7p. То есть просто дублируем строку 7 раз.
  3. Входим в режим визуальный блок Ctrl+q и тянем курсор вниз на все наши строчки. Теперь есть вариант: выбрать ввод после символа под курсором (нажать A), или перед символом (нажать I)
  4. Вводим собственно то, что должно быть напечатано во всех выбранных строках.
  5. Нажимаем Esc
Думаю может быть интересно поиграть с режимом визуального блока.
Немного почитать о нем можно так :h ctrl-q
vim


Vim: скринкасты
October 29, 2013
Тут буду подкладывать ссылок на кладбища скринкастов по виму
  1. Vim Tutorial Videos - для начинающих, от базовых до очень интересных вещей, веселый автор
  2. Vimcasts.org - широко известный ресурс, просто тонны всяких vim-вкусняшек, обязательно к посещению
  3. Destroy All Software - ворованный каталог из 80 скринкастов одного очень толкового дядьки. Кроме вима также рассматриваются git, TDD, *nix и т.д. Каталог можно глянуть вот тут.
  4. udioica.blogspot.ru - это не совсем скринкасты, а анимированные gif-ки с решениями задач с vimgolf.com. Вообще-то я не уверен что это человек. Больше похоже на vim-терминатора. Я не представляю как это все можно запомнить.
vim


Очень неудобно бывает после правки .vimrc закрывать сессию полностью чтобы применить внесенные изменения. Можно этого избежать довольно легко:
# выполните в редакторе :echo $MYVIMRC чтобы понять что это за переменная
source $MYVIMRC
Чтобы было удобнее жить можно добавить пару команд покороче, например так:
" edit ~/.vimrc file
command! RcEdit e $MYVIMRC
" reload ~/.vimrc config
command! RcReload source $MYVIMRC
vim


Я пользуюсь этим в виме не часто пока и постоянно забываю как там танцуется эта замена, самый простенький вариант примерно такой: имеем файл пример с таким содержимым:
./folder1/folder2/file1.txt
./folder1/folder2/file2.txt
./folder1/folder2/file3.txt
./folder1/folder2/file4.txt
./folder3/folder5/file5.txt
./folder3/folder5/file6.txt
./folder3/folder5/file7.txt
./folder4/folder6/file8.txt
./folder4/folder6/file9.txt
./folder4/folder6/file10.txt
Допустим нужно отрезать из каждой строки все что касается пути, то есть чтобы остались только имена файлов. Переходим в командный режим и выполняем
:%s/\.\/.*\///gc
Выглядит довольно похабно, но в общем-то главное знать что искать. Синтаксис замены вообще примерно такой
:%s/serach-str/replace-str/g
search-str - то что ищем, replace-str - то на что заменяем, просто в примере выше использовано регулярное выражение и слешей много из-за обычного скрина точки и слешей. Модификатор c в примере означает что каждое найденное совпадение и соответственно его замену нам надо будет подтвердить, иначе все найденное в файле будет молча заменено.

Интересный нюанс: чтобы заменить что-то с переводом строки \n придется использовать \r то есть примерно вот так
:%s/\n/ -- \r/gc
Либо как вариант, тоже самое
# чтобы ввести ^M жмем (прямо в строке набора команды) Ctrl+v - Enter
:%s/\n/ -- ^M/gc
vim


Для этого понадобится установить xmllint
# для ubuntu
sudo apt-get install libxml2-utils

В .vimrc это будет выглядеть примерно так
command FormatXml execute "%!xmllint --format --recover - "
После этого вызов в редакторе чтобы отформатировать текущий файл будет таким:
:FormatXml
Другие бинды на ваше усмотрение конечно.
vim


aghr