Создать новый файл в каталоге открытого файла в vim?


93

Я нахожусь в положении, когда я хочу создать новый файл в том же каталоге, что и тот, в котором находится открытый файл. Как мне создать новый файл в каталоге открытого файла в vim? Кроме того, есть ли место, где я могу научиться этим вещам самостоятельно? Гугл не помог.


Вы говорите о vim, текстовом редакторе в Linux?
ianaz 05

Ответы:


173

Изнутри Vim новые файлы создаются аналогично редактированию существующих файлов с помощью таких команд, как :edit filenameили :split filename. Чтобы сохранить их на диске, вам необходимо (при желании ввести содержимое и) сохранить их через :write.

Как и в командной строке, Vim имеет представление о текущем каталоге ( :pwdперечисляет его). Все пути к файлам указаны относительно него. Вам не нужно дублировать путь к вашему текущему файлу, для них есть несколько хороших ярлыков: %относится к текущему файлу, :hявляется модификатором для его каталога, минус имя файла (cp. :help filename-modifiers). Так,

:e %:h/filename
:w

создаст новый файл с именем filenameв том же каталоге, что и текущий открытый файл, и запишет его.

В качестве альтернативы некоторым людям нравится, что Vim всегда переключается в каталог текущего файла. Это можно настроить, разместив

:set autochdir

в ваш ~/.vimrcфайл (который читается при запуске Vim). Тогда выше становится просто

:e filename
:w

Наконец, у Vim есть отличная встроенная программа :help. Научитесь ориентироваться и искать!


2
autochdirк сожалению, ненадежный, и я обнаружил, что не могу на него полагаться. Вместо этого я поставил autocmd в свой vimrc:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang

1
Дог тоже хотел бы проголосовать за ваш ответ, но у него нет необходимой репутации. Спасибо за хорошо написанное объяснение!
Dawg

14

Вам следует попробовать плагин "nerdtree". В окне ботанического дерева вы набрали клавишу m, и вам отобразятся варианты операций с файлом.


11

Если вы хотите создать новый файл, а также показать его в окне рядом с текущим файлом, вы можете попробовать следующее:

:vsp newfile

Символ vspозначает vertical split, и он разделяет экран пополам: на одном отображается текущий файл, а на другом - новый файл (также работает с spразделением по горизонтали).

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

:cd %:p:h

Эта команда изменяет текущий рабочий каталог на каталог активного файла, что означает, что запуск vspкоманды (или любой из вышеперечисленных команд) создаст файл в этом каталоге.


2

Когда вы открыли vim в несуществующем месте, например $ vim /etc/<some_folder/<next_folder>/file.cfg

затем, чтобы создать новый каталог, находясь внутри vim, просто запустите в обычном режиме, :! mkdir -p /etc/<some_folder/<next_folder>а затем сохраните свой документ как обычно :w :x ZZ(как хотите)

вот и все


1

Это для Гвим! Введите это, чтобы увидеть текущий каталог.

:cd

затем измените это с помощью

:cd desktop/somefolder

затем сохраните или создайте новый файл там

:enew asd.cpp

теперь снова посмотрим файл

:cd

0

Я довольно опаздываю на вечеринку, но другой вариант - открыть NERDtree с помощью :Eили :Explore(или его альтернативных вариантов разделения :Vexplore/ :Sexplore== :Vex/ :Sex).

В NerdTree вы можете создать новый файл %и ввести его имя. Он автоматически откроет файл и создаст его после того, как вы :w/ сохраните его.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.