2015-08-19 4 views
3

Я только что переключился с Sublime Text на GVIM (в Windows). Я все еще обсуждаю, должен ли я продолжить ST или полностью перейти на VIM. Одной из особенностей, которую я отчаянно нуждаюсь (или пропустите), являетсяКак добавить папку в проекты (например, Sublime Text) в VIM?

  1. Ctrl+P перейти к любому файлу, который я хочу в моем списке папок.
  2. Ctrl+Shift+f найти (и заменить) любой текст из этих списков папок.

Я добавил количество папок с использованием Add Folders to Project функции в Sublime Text 3. Это было действительно полезно. Теперь я знаю, что плагин CtrlP для VIM может делать аналогичную вещь, но я не могу понять, как заставить его искать папки, которые я хочу, а не корневую директорию текущего файла.

Я немного поиграл с настройкой пути в моем файле vimrc без особого успеха.

Не могли бы вы помочь. Если это повторяющийся вопрос, извините меня.

Спасибо.

+0

Для поиска и замены я рекомендую ctrlsf.vim: https://github.com/dyng/ctrlsf.vim – Zach

ответ

-1

Eureka ... !!!!!

После неустанного поиска в течение нескольких дней (и бессонных ночей), я нашел свой ответ (пожалуйста, прочтите).

Сначала некоторые foolosophy хотя

Я была так увлечена не отказываться от Vim. Но эта проблема только что съела меня изнутри и была разрушительной в моей работе. У меня есть много папок проектов в Windows, которые я хочу, чтобы vim просматривал. Ctrl + p по какой-то причине никогда не работало. У меня были некоторые не очень приятные мысли о том, чтобы отказаться от Вима. и тогда я нашел это!

Ответ

Это немного отличается от того, что я ожидал. Но ответ - это все (от VoidTools). Он позволяет искать из любого места и дает результаты в доли секунды. Это, безусловно, лучший инструмент поиска файлов в Windows. Он поддерживает Regex. (хотя это не инструмент поиска текста). Он имеет интерфейс командной строки под названием

es.exe

с помощью FindEverything.vim плагин Vim (в FindEverything), я был в состоянии найти не только в моих папках проекта, но почти везде. Он возвращает результаты в буфере vim.

Thanks Y'all за вашу помощь. Я знаю, что не все могут согласиться с этим решением. Но в Windows это, безусловно, лучшее решение, я нашел! Надеюсь, это полезно для других, почему в одной лодке !!!

0

Хороший выключатель! Итак, вы обнаружили CtrlP. Он содержит обширную документацию. Используйте :h ctrlp, чтобы увидеть все vimdocs, объясняющие различные варианты. Это объяснит некоторые важные настройки для работы dirs, которые очень важны для хорошего опыта с ним. Возьмем, например, некоторые настройки, которые я использую:

" The one you really care about... 
" Set root to CWD. Another good option is 'r' for VCS mode. 
" You should start vim in the root of your project tree 
let g:ctrlp_working_path_mode = 0 
" You _can_ switch dirs 
let g:ctrlp_extensions = ['dir'] 

" Avoid big/unimportant project areas 
set wildignore+=*/node_modules/*,*/build/*,*/components/*,*/_public/*,*/tmp/*,*/vendor/* 

" Cache -- get used to pressing F5 on tree changes/additions 
let g:ctrlp_use_caching = 1 
let g:ctrlp_clear_cache_on_exit = 0 

" Somewhat self-explanatory 
let g:ctrlp_show_hidden = 1 
let g:ctrlp_switch_buffer = 2 
let g:ctrlp_max_depth = 6 
let g:ctrlp_max_height = 50 

" Open *h*orizontally and *j*ump to first win. 
let g:ctrlp_open_multiple_files = 'hj' 
" Use <C-d> to toggle 
"let g:ctrlp_by_filename = 1 

Для дальнейшего контроля, где искать файлы вне вашего рабочего дерева, обратитесь g:ctrlp_user_command. Существует a Windows example с использованием dir. Вы бы это использовали, но с вашими дополнительными путями.

Возможно, вы также захотите добавить NerdTree, приятное дополнение к CtrlP. Это напоминает боковую панель ST. Используйте его ?, чтобы получить справку. В нем есть меню, которое позволяет быстро добавлять файлы и директории, возможно, как будто вы хотите «Добавить папки в проект».

Для поиска и замены см. ag.vim. Я сопоставляю его с <leader>g (что означает «grep»).

Те, кого упомянули, являются моими избранными, но вы должны изучить мир плагинов Vim, чтобы решить, какие другие стоит принять. Я рекомендую попробовать по одному, пока вы новый, а не иногда непрозрачный «дистрибутив». Инструменты для облегчения управления плагином - Vundle/Pathogen (выберите один).

+0

Ни один из документов для адреса CTRL OP для нежелательных каталогов, и Ag не может заменить , – Amadan

+0

Спасибо, Мика. Как упоминал Амадан, я прочитал документ CtrlP, но не смог найти способ использовать его для нескольких каталогов. Может ли кто-нибудь дать мне пример использования 'let g: ctrlp_user_command = 'dir% s/-n/b/s/a-d'' для Windows с несколькими каталогами. – Cricrazy

+0

У меня нет машины Windows для экспериментов, но [эта документация] (http://ss64.com/nt/dir.html) (см. Раздел «Примеры») предлагает следующее: 'dir/ac: \ some \ dir \ c: \ another \ dir \ '. Если Cygwin - это вариант, вы получите полнофункциональную команду find и лучшее подглаживание. –

2

AFAIK, ctrlp plugin выполняет поиск только в одном каталоге (и его потомках). Используйте функции Unix: создайте каталог со ссылками на интересующие вас каталоги вне проектов. Таким образом, связь с каталогами, не относящимися к проекту, - это не только то, что знает редактор, а что-то, записанное в реальном проекте ,

Поиск и замена немного стикер. Вы хотите работать со всеми интересующими вас файлами, а затем повторять команду replace через все из них.Например, если вы хотите сделать поиск по foo и заменить bar на все файлы C здесь и под землей,

:args **/*.c 
:argdo %s/foo/bar/g 
1
  1. Ctrl+P пойти в любой файл, который я хочу в моем списке папок.

    Команда :find может быть использован для «найти» файл в каталогах, указанных в параметре 'path':

    set path+=/some/arbitrary/path 
    set path+=/another/one 
    
    :find *foo 
    

    я нахожу эти два отображения очень удобно:

    nnoremap <key> :find *         " search in every directory 
                      " in 'path' 
    nnoremap <key> :find <C-R>=expand('%:p:h').'/**/*'<CR> " start from the directory 
                      " of the current file 
    
  2. Ctrl+Shift+f, чтобы найти (и заменить) любой текст в списке каталогов.

    Что сказал амадан выше.

+0

Спасибо, Romainl. Я добавил свои папки, как вы указали. 'set path + = c: \ project1 \' 'set path + = c: \ project2'. Когда я ищу, используя: find для файла, который, как я знаю, существует, он дает мне следующую ошибку. 'E345: Не удается найти файл на пути.« Я почти на грани отказа. ' – Cricrazy