Подтвердить что ты не робот

Получите имя файла без расширения файла в функции Vim.

Я хочу получить имя файла без расширения файла в Vim.

Я написал следующие функции в моем файле .vimrc для компиляции и запуска программы Java.

:function! JAVA_RUN()
:!javac %^M
:endfunction

map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>

В стороне функция, как я могу получить имя файла с расширением.

4b9b3361

Ответ 1

:help expand() должен дать вам ответ, см. expand().

Вы должны использовать модификатор r для%, с %:r вместо %, чтобы получить имя файла без расширения.

Если вы хотите писать функции для сборки и выполнения файлов, вы также должны посмотреть документацию для shellescape, чтобы для предотвращения проблем с пробелами в имени файла или пути.

Ответ 2

Я буквально просто прочитал аналогичный вопрос (в том, что кто-то еще пытался настроить vim для автоматического создания для них с помощью F-ключа) и написал ответ о том, как вы можете использовать силу команды vim :make, даже не требуя писать Makefile. В вашем случае это менее напрямую связано с вопросом, но я думал, что упомянул об этом на случай, если вы заинтересованы.

Кроме того, кто-то, кажется, написал что-то на Vim Tips Wiki о том, как настроить команду vim :make для конкретной работы с Java проекты, построенные с помощью ant. Я не работал с Java в то время как сам, но в вашем случае это может быть хорошим местом для начала.

Ответ 3

Если вы хотите удалить имя файла (кроме % и т.д.), посмотрите fnamemodify()

fnamemodify({fname}, {mods})                *fnamemodify()*
        Modify file name {fname} according to {mods}.  {mods} is a
        string of characters like it is used for file names on the
        command line.  See |filename-modifiers|.

fnamemodify("main.java", ":r") возвращает main.

Ответ 4

Я пришел сюда, чтобы найти ответ на аналогичный вопрос. Я хотел иметь возможность извлечь текущее имя класса из редактируемого java файла. Я нашел очень аккуратный способ сделать это в vim с аббревиатурой:

ab xclass <C-R>=expand('%:t:r')<CR>

Поместите эту строку в свой .vimrc(или аналогичный), чтобы это работало. Аббревиатура будет автоматически запускаться, как только вы нажимаете пробел, и поэтому я обычно префикс их "x", чтобы избежать их случайного расширения.

Трюк здесь - это комбинация :t и :r в аргументе expand(). % - это "текущее имя файла", :t выбирает только t ail пути (только последний компонент пути), а :r выбирает только r oot ( "одно расширение удалено" ). (цитируемые части из официальной документации expand().)

Итак, когда вы создаете новый класс в файле /a/b/ClassIAmAboutToCreate.java, вы должны ввести:

public class xclass {

Когда вы нажмете пробел после "xclass", аббревиатура будет расширена до public class ClassIAmAboutToCreate, что именно то, что вам нужно.

Также обратите внимание, что сокращение может быть вызвано нажатием Ctrl + ], который позволяет избежать вставки пробела после имени класса.