Як змусити Vim використовувати ім'я файлу за замовчуванням, коли не надано жодних імен файлів?


17

Я рідко, якщо взагалі, просто відкриваюсь vimбез назви файлів. Досить часто я хочу тестувати щось, зазвичай це сценарій швидкого викидання, і я їх зазвичай називаю test.sh(або якийсь його варіант, як test.py). Чи можу я vimприпустити test.shім'я файлу, якщо я працював vimбез імен файлів? Я зазвичай використовую псевдоніми (наприклад , vimsдля vim test.shі vimpдля vim test.py, або йти все :w test.sh), але мені цікаво , якщо є спосіб зсередини vim. Було б навіть краще, якщо я можу обмежити це деякими каталогами, наприклад /tmp, або ~/dev.

Відповіді:


10

Спробуйте поставити це в кінці вашого .vimrc (модифікуйте, якщо потрібно)

if @% == "" && getcwd() == "/tmp"
    :silent edit test.sh
endif

Це перевіряє, чи поточне ім'я файлу порожнє ( @%посилається на поточне ім'я файлу), і перевіряє, чи поточний каталог vim /tmp. Ви можете додавати й інші каталоги так само

(getcwd() == "/tmp" || getcwd() == "~/dev")

Потім він мовчки редагує test.sh. Якщо цей файл вже існує, він завантажить його. В іншому випадку ви розпочнете новий буфер з цим ім'ям, і файл буде створений, якщо ви його запишете.

Я мовчав, щоб придушити таке повідомлення під час запуску:

"test.sh" [New File]
Press ENTER or type command to continue

5

Модифікація відповіді Джона може бути корисною:

if @% == "" && getcwd() == "/tmp"
    :silent edit `=glob("test\.*", 1, 1)[0]`
endif

Це відкриває перший файл, який починається з test..

Замість першого файлу, якщо ви хочете також відкрити інші відповідні файли, зробіть:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.