Для моих программ Haskell я знаю, что имя исполняемого файла в пути совпадает с именем моего текущего каталога. Теперь я хочу, чтобы создать отображение следующим образом:Использовать текущий каталог в командах Vim
:map <leader>rr :!curdir()<cr>
Однако, единственная команда, которую я знаю, это getcwd()
, что дает мне весь путь вместо имени просто каталога.
Есть ли простой способ извлечь только имя каталога?
См. [Этот ответ] (http://stackoverflow.com/a/13908273/546861). – romainl
Ответы ниже - хорошие решения vimscript. Если у вас нет карты, вы также можете оценить ее динамически с помощью = register. (после ввода части команды ex, например ':!' type 'CR =', за которой следует один из приведенных ниже vimscript-решений. – darcyparker
@darcyparker. Ни то, ни другое. Не используйте какие-либо регулярные выражения для такой работы, функция для этого. Любой, предполагающий, что '/' является разделителем путей, ошибочен. Любой, кто предполагает, что '/' и '\' - это * оба разделителя пути так же ошибочны. Более того, любой, предполагающий '\' всегда * * разделитель путей на windows также неверно. Я также не знаю, в каких обстоятельствах разделитель путей будет ':', но может быть и так. Большинство систем \ * nix могут иметь имена '\' и ':' в именах файлов. – ZyX