cyrus 16.10.2010 23:26
Vim — Who's next?
Об одном маленьком, но довольно полезном плагине :предыстория
Вчера мне нужно было взять кое-какие файлы у одного человека. И он копировал их на мою флэшку со своего MacBook Pro.
И возникла ситуация, что в папке находятся несколько файлов с исходниками, и он
не помнил точно какой именно файл нужно мне перекинуть. Тогда он открыл первый файл(не совсем понял что это был за текстовый редактор, возможно TextMate, хотя не знаю точно) и стал нажимать горячие клавиши - что-то вроде Cmd+Left. И в редакторе файлы автоматически заменялись. То есть получился такой быстрый просмотрщик файлов в текстовом редакторе.
Таким образом необходимый файл удалось быстро найти.. и скопировать на флэшку.
Захотелось что-нибудь похожее реализовать и у себя.
Решение для Vim нашлось сразу же. Плагин называется nextfile. Достаточно его скачать отсюда и поместить в папку
~/.vim/plugin
Плагин крайне прост в использовании, по крайней мере его основные функции. В посте про используемые плагины в Vim его вроде не встречал. Так что, надеюсь, кому-нибудь пригодится эта информация.
Думаю, реализовать что-то подобное и в других программах тоже будет не слишком сложно.
Предлагайте свои варианты для разных редакторов :)
time2die 16.10.2010 23:34 #
+ 2 -
использую для работы с файлами NERD_tree, очень нравиться, дс его помощью задача решилась бы не намного сложнее, а сам плагин универсальнее
Режим quick view в mc (ctrl+x-q) позволяет просмотреть текущий файл во второй панели, мне кажется, все же файловый менеджер удобнее для файловый операций, чем текстовый редактор, пусть даже это такой мощный редактор, как vim.
Эммм.... vim -- текстовый редактор? Я один здесь вижу противоречие?
Как вариант, но не совсем то. Он открывает в новой вкладке, а плагин nextfile в том же самом окне. Просто иногда бывает полезно переключаться по файлам быстрым нажатием комбинации из двух клавиш.
В емаксе получилось так:
PS: мне кажется, что аналогичный функционал есть из коробки.
(defun find-file-next (&optional fname)
"Cycle finding next readable file in current direcotry"
(interactive)
(let ((current-file (or fname
(file-name-nondirectory (buffer-file-name)))))
(with-temp-buffer
(insert-directory "" nil nil t )
(goto-char (point-min))
(re-search-forward (concat "^" current-file "$") nil t 1)
(if (< (line-number-at-pos)
(line-number-at-pos (point-max)))
(forward-line)
(beginning-of-buffer))
(let ((next-file (buffer-substring-no-properties
(line-beginning-position)
(line-end-position))))
(if (and (file-regular-p next-file)
(file-readable-p next-file))
(find-file next-file)
(find-file-next next-file))))))
PS: мне кажется, что аналогичный функционал есть из коробки.
Спасибо, интересная штука.
Я под вимом пользуюсь такой штукой: "Nerdtree"
Брать можно отседова
Запускается просто: в командном режиме вводим N затем tab, оно мапится в NERDtree, жмем enter, и кайфуем! =) Переключение между окнами: ctrl+w.
Ксатит, судя по информмации на их страничке, он тоже самое умеет, что и nextfile:
"Mappings to open files in new/existing windows/tabs"
Кстати на страничке есть демо
Я под вимом пользуюсь такой штукой: "Nerdtree"
Брать можно отседова
Запускается просто: в командном режиме вводим N затем tab, оно мапится в NERDtree, жмем enter, и кайфуем! =) Переключение между окнами: ctrl+w.
Ксатит, судя по информмации на их страничке, он тоже самое умеет, что и nextfile:
"Mappings to open files in new/existing windows/tabs"
Кстати на страничке есть демо
тоже рекомендую NERD_tree. Настроил открытие на F5 (в хелпе много еще чего интересного можно найти)
nnoremap <silent> <F5> :NERDTreeToggle<CR>
inoremap <silent> <F5> <Esc>:NERDTreeToggle<CR>
имхо на днях видел это толи в vim толи в less вспомнить не могу, просто одна кнопка переключала на ранее открытые файлы
Если в консоли, то можно сделать vim -p * или vim *. Ну а дальше либо gt, либо :bn...