- Если
vimраспознал dos-овые концы строк, и не показывает^M,:set ff=unix :w
Документацию по поводу опции
fileformatпочитать можно в разделеusr_23::help usr_23
- Если vim автоматически не распознал DOS line ends, то в конце строк будут символы
^M. Удалить их можно простой заменой::%s/^M//g
Символ
^Mпри этом вводится какCtrl-V Ctrl-M.
Архив рубрики «vim»
vim: избавляемся от dos-овых концов строк (\r\n -> \n)
02.09.2009Unix: Поиск и замена во многих файлах одновременно
09.02.2009Задача: найти все файлы содержащие OLDTEXT, и заменить OLDTEXT на NEWTEXT.
Решение:
grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs vim -p
В открывшемся окне vim командуем:
:tabdo %s/OLDTEXT/NEWTEXT/g
(заменить OLDTEXT на NEWTEXT во всех вкладках)
:xa
(записать изменения во всех вкладках)
либо
:qa!
(отменить изменения во всех вкладках)
Ссылки по теме:
vim + paste: no indent
17.11.2008При вставке через буфер обмена, vim автоматически табуляцией делает отбивку (indent). Это приводит к тому, что код теряет форматирование, выстраиваясь "лесенкой":
MinSpareServers 5 MaxSpareServers 10 StartServers 10 MaxClients 500 MaxRequestsPerChild 3000 Timeout 150 KeepAlive off HostnameLookups off
Чтобы избежать ненужного форматирования, можно использовать пару параметров paste/nopaste:
:set paste
... вставлям текст ...
:set nopaste
vim tabs
01.10.2008Открыть сразу несколько файлов в tab'ах в vim можно так:
~$ vim -p `find -type f -name '*.rb' -print0 | xargs -0 file -i | grep -v 'utf-8' | awk '{print $1}' | sed 's/://'`
(пример от Харитона, открываем в vim все ruby-файлы в кодировке, отличной от utf-8)
Здесь важен ключ -p: открыть файлы в табах.
Vim откроет столько буферов, сколько нашлось файлов, но не более tabpagemax, по умолчанию 10. Изменить количество табов можно в ~/.vimrc так:
set tabpagemax=15
При превышении tabpagemax новые табы не создаются, но навигировать по файлам все равно можно командами :next и :last.
Переключаться между табами можно командами: :tabnext, :tabprevious, :tablast, :tabfirst. Можно замапить из на горячие клавиши. Можно пользоваться горячими клавишами <C-PgUp> and <C-PgDown>.
Ещё полезное:
:tabn[ew] - открыть новый таб
:tabe[dit] [++opt] [+cmd] {file} - открыть файл в новом табе (типа :edit)
:tabf[ind] [++opt] [+cmd] {file} - найти файл в path и открыть в новом табе (типа :find)
CTRL-W gf - редактировать файл с именем, находящимся под курсором, в новом табе
CTRL-W gF - редактировать файл с именем, находящимся под курсором, в новом табе. Отмотать на строку которая указана после имени файла
:tabc[lose][!] - закрыть таб
:tabo[nly][!] - закрыть все табы кроме активного
:tabn[ext] (gt, <C-PageDown>) - переключиться на следующий таб
:tabp[revious] (:tabN[ext], gT) - на предыдущий таб
:tabr[ewind] (:tabfir[st]) - на первый таб
:tabl[ast] - на последний
:tabs - список табов
:tabm[ove] [N] - переместить текущий таб на место сразу за N-ым
:tabd[o] {cmd} - выполнить команду на каждом из табов (:tabdo %s/foo/bar/g)
Подробнее здесь - :help tabpage
Еще интересная фишка. Если переместить курсор на имя файла и нажать gf (go-to-file), то откроется альтернативный буфер с содержимым указанного файла. Старый файл как-бы пропадет из поля зрения. Однако на него можно быстро переключиться командой C-^, так же и обратно. Так удобно редактировать 2 файла одновременно.
По поводу полезных маппингов:
http://www.bygonesky.com/Programming/Settings/Vim/carlos.vim.html, смотреть начиная со 125-й строки.
vim: old-skool h0tkeyz
23.09.2008" F2 = Save file map <silent> <f2> :write<cr> imap <silent> <f2> <esc>:write<cr> " F10 = Exit without save map <silent> <f10> :quit<cr> imap <silent> <f10> <esc>:q<cr>
VIM + Perl : .vimrc, perl-support
16.09.2008Мой .vimrc + плагины (perl, tt2).
Для комфортной разработки на Perl рекомендуется также плагин perl-support .