2015-11-23 2 views
0

я получил следующее отображение горячих клавиш:Vim Открыть объединить в текущей папке

nnoremap <leader>f Unite file -path=~/Workspace

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

Кто-нибудь знает, как я могу это сделать? : S

+0

Вы пробовали%: P: час для текущей папки? – gaetanoM

+0

У меня есть, кажется, обрабатывается все после '-path =' как строка. –

+0

@RobinHeggelundHansen Некоторые вещи, которые я заметил: (1) Вам не нужно '' 'в начале' Unite'? (2) Без '' в конце карты вам нужно вручную нажать enter. Это желаемое поведение? – sidyll

ответ

3

Как об использовании:

:UniteWithBufferDir file 

или

:UniteWithCurrentDir file 

(в зависимости от того, что вы хотите)

+1

Я вообще не понимаю о _Unite_ и дал общий ответ. Но это, кажется, точное решение! – sidyll

4

Вы можете использовать функцию expand() использовать %:p:h в тех местах, где имя файла не ожидается (эти разложения являются аргументы имен файлов, а не другие, как то, что это, кажется, происходит с вашей командой)

:echo expand('%:p:h') 

Но вы не можете напрямую сопоставить это. Это команда, которая должна быть построена «на лету», поэтому вы можете использовать :execute, чтобы построить и выполнить оцененной выражение:

nnoremap <leader>f :exec "Unite file -path=" . expand('%:p:h') 
+1

⚠️ @ RobinHeggelundHansen Пожалуйста, проверьте другие ответы и на более подходящие решения, я сохраню свою только потому, что это «Vim generic» на случай, если вы или будущий зритель , должен знать эту технику. – sidyll

2

Unite позволяет динамический аргумент, используя backtick, как описано в Unite помощи документа:

You don't have to use |:execute| for dynamic arguments. 
You can use evaluation cmdline by ``. 
Note: In the evaluation, The special characters(spaces, "\" and ":") 
are escaped automatically. 
> 
    :Unite -buffer-name=search%`bufnr('%')` line:forward:wrap<CR> 

Так что в вашем случае, отображение будет:

:nnoremap <leader>f :Unite file -path=`expand('%:p:h')` 
+0

Отличный ответ, также, я рассматриваю удаление шахты, так как на нем явно показано не-_Unite_ надлежащее решение – sidyll

+2

Ну @sidyll, ваш ответ - это тот, который заставил меня найти документацию. Итак, вы вносите свой вклад в мой ответ: -D –

+0

Спасибо ... Я держу его и добавил примечание к собеседнику :-) – sidyll

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