Як встановити робочий / поточний каталог у Vim?


109

Отже, коли я хочу створити новий файл за допомогою команди: e, я не хочу вказувати весь шлях, лише нове ім'я файлу. Чи можна це зробити?

Відповіді:


144

Як вже було запропоновано, ви можете використовувати autochdir, який зміниться в каталог файлу, який ви відкрили, інший варіант

:cd mydirectory

що змінить каталог. Це може бути абсолютний або відносний шлях, тому :cd ..буде рухатися вгору на один рівень. Або ви можете використовувати, :cd %:hякий також змінить каталог, у якому знаходиться поточний файл, але без встановлення autochdir.

:cd

змінить каталог у ваш домашній каталог (або у Windows, надрукуйте поточний каталог).

:cd -

змінить каталог на попередній каталог, який ви відвідали.


13
якщо ви використовуєте кілька вікон, ви навіть можете використовувати: lcd для зміни каталогу лише для поточного вікна.
Марно

1
@Useless: цікаво ... Я не думаю, що я ніколи цього не хотів би, але гадаю, це справа смаку. Дякуємо за інформацію.
falstro

3
Я намагаюся розібратися, що означає%: h, будь-яка допомога?
Майкл

10
@Michael %переводить поточне ім'я файлу, включаючи шлях, :додає модифікатор, hє head, тобто шлях до останнього роздільника шляху, тобто виключаючи саме ім'я файлу.
falstro

@falstro, ти знаєш, як: команда cd може застосовуватися до всіх вікон у межах тих самих запущених екземплярів vim? Наприклад: при використанні спліт: sp
mgouin

15

Крім того, якщо ви переглядаєте файлову систему за допомогою провідника файлу netrw, ви можете встановити поточний каталог натисканням клавіші c.


також використовуйте set autochdirдля 'c' keyотримання ефекту в оболонці, так що ви можете використовувати !command args в зміненому режимі.
pimgeek

9

Спробуйте додати set autochdirдо свого .vimrc. Якщо ви хочете змінити це лише один раз, використовуйте :cd(або :cd!примушуйте).


1
Довідка каже, що це розбиває деякі плагіни (я не знаю, які з них), тому я вжив запобіжних заходів щодо додавання карти в мій .vimrc: cnoremap cd. lcd %:p:hа nnoremap ,cd :cd %:p:h<CR>:pwd<CR>замість цього
ErichBSchulz

також скористайтеся 'c' keyв netrw file Explorer для супроводу цього.
pimgeek

3

Я не знаю, що не так з vim. Я хочу, щоб каталог, де я запускаю vim як поточний.

Я слідував вище підказці про autochd і встановив її на noautcd у своєму .vimrc.

Я ще цього не робив, але я зараз запускаю такий vim:

vim —cmd 'cd `pwd`'

Це зробить його дотримуватися поточного каталогу!


2

З netrw:в доповненні до натискання cкнопки для установки поточного каталогу, ви можете також помістити:

let g:netrw_keepdir= 0

у вашому .vimrc; це означає, що netrwкаталог веб-переглядачів буде таким самим, як і поточний каталог.


Здається, це поведінка еквівалентна: lcd для кожної зміни папки netrw. Чи маєте ви уявлення про те, як цей параметр може бути еквівалентним замість: cd (замінити dir для всіх windows)? Дякую!
mgouin

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.