2010-01-31 4 views
15

Я код в Vim, а не IDE. Мой исходный код часто вложен в 2-3 справочника глубоко.Vim: e начальный каталог?

~/foo$ find 
xyz 
bar/abc 
bar/def 

~/foo$ vim 
// inside of vim 
:e bar/abc 
... some work ... 
:e <-- is there a way I can have this :e start in ~/foo/bar instead of ~/foo ? 

В принципе, я хочу: е, чтобы начать каталог в «путевом имени последнего редактируемого файла»

Спасибо!

ответ

12

Существует множество причин не любить autochdir, так как это испортит некоторые плагины, и если вы закончите: e ../../../foo.txt, вы ничего не набираете. Так же, как идея попробовать этот CMap я залетела

:cnoremap red edit <c-r>=expand("%:h")<cr>/ 

, то вы можете набрать: красный и получить

:e /the/path/to/your/current/files/dir/ 

(Edit: возможно использовать г вместо красного, как есть команды, которые начинаются с красным)

Чтобы расширить тему, также ознакомьтесь с плагином FuzzyFinder и некоторыми пользовательскими сопоставлениями, чтобы быстро перейти к общим файлам, которые вы всегда редактируете. Например:

10 или около того ваших обычных файлов должно быть не более 2 нажатий клавиш. Это помогает, если они систематически называются

Вот идея, которую я использую для django.

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

+0

Это именно тот ответ, который я искал. – anon

2

Извините, но команда vim: edit принимает путь, который интерпретируется относительно текущего рабочего каталога экземпляра vim.

У вас есть команда cd, которую вы можете использовать для :cd bar, а затем выполните работу некоторое время, затем :cd ...

Надеюсь, что поможет некоторым.

3

Чтобы всегда изменить рабочий каталог на каталог текущего файла у меня есть это в моем .vimrc:

if has("autocmd") 
    autocmd BufEnter * :lcd %:p:h 
endif " has("autocmd") 
+0

Отлично! Но автокоманды вроде этого всегда отображают ошибку 'E32', когда вы закрываете все файлы с помощью:: bd' на каждом из них. – Niloct

11

Попробуйте опцию autochdir. Он автоматически изменит текущий рабочий каталог на тот файл, который был недавно открыт или выбран. В .vimrc:

set autochdir 

Для получения дополнительной информации, :help autochdir

0
  • :cd изменения каталога
  • :pwd печатает текущий.
1

Некоторое время назад я спросил вопросы, связанные с этим в списке рассылки ВИМ: http://www.mail-archive.com/[email protected]/msg03266.html Может быть, вы найдете полезные советы в этой теме.

Я тестировал множество плагинов, но поскольку графические интерфейсы на основе CLI мне не нравятся, я просто закончил использование стандартного vim с несколькими настройками конфигурации.

Как гудок отметил, эта строка устанавливает рабочий каталог так же, как файл вашего рабочего на:

autocmd BufEnter * lcd %:p:h 

Мой другой наконечник должен использовать wildmenu. Это облегчает получение обзора файлов в вашем текущем каталоге, когда вы идете: e, а затем TAB. Я программист на языке python, поэтому в последней строке показано, как скрыть автоматически сгенерированные файлы, которые интерпретирует интерпретатор python, но вы можете использовать его, чтобы скрыть файлы java .class или c .obj-файлы или что-то еще.

set wildmode=list:longest 
set wildignore=*.pyc,*pyo 
+0

Я делаю что-то подобное, но исключаю файлы справки: 'au BufReadPost * if & ft! = 'Help' | молчать! cd%: p: h | endif' – idbrii

0

Почему не просто :E? Исследуйте каталог текущего файла.

:help :E

0

Это не совсем то, что вы хотели, но проверить NERDTree.

+0

Это действительно комментарий, а не ответ. С немного больше rep, [вы сможете оставлять комментарии] (http://stackoverflow.com/privileges/comment) .. – Jack

+0

@Jack Я знаю ... – Gaelan

0

На vim/gVim У меня только cd C:/blah/blah наверху моего vimrc. Я предполагаю, что это работает на всех платформах.

Я лично использую бродягу для каждого проекта, поэтому достаточно одного компакт-диска, но я думаю, вы можете заставить vim использовать и другие файлы конфигурации, -u flag Я думаю.

Или наведите ключ на каждый проект, который вы так нажимаете Ctrl + F1 делает cd path/to/project/1 и Ctrl + F2 делает cd path/to/project/2 возможно?

Примечание: я не использую никаких плагинов

Смежные вопросы