Utworzyć nowy plik w katalogu otwartego pliku w vimie?

93

Znajduję się w pozycji, w której chcę utworzyć nowy plik w tym samym katalogu, w którym znajduje się otwarty plik. Jak utworzyć nowy plik w katalogu otwartego pliku w vimie? Czy jest też miejsce, w którym sam mogę się tego nauczyć? Googlowanie nie pomogło.

Dawg
źródło
Mówisz o vimie, edytorze tekstu w systemie Linux?
ianaz

Odpowiedzi:

173

Z poziomu Vima tworzone są nowe pliki, tak jak edytowane są istniejące pliki, za pomocą poleceń takich jak :edit filenamelub :split filename. Aby zachować je na dysku, musisz (opcjonalnie wpisać zawartość i) utrwalić je za pośrednictwem :write.

Podobnie jak wiersz poleceń, Vim ma pojęcie bieżącego katalogu ( :pwdwyświetla go). Wszystkie ścieżki plików są względem niego względne. Nie musisz duplikować ścieżki do swojego aktualnego pliku, jest do nich kilka fajnych skrótów: %odnosi się do bieżącego pliku, :hjest modyfikatorem jego katalogu, bez nazwy pliku (cp. :help filename-modifiers). Więc,

:e %:h/filename
:w

utworzy nowy plik o nazwie filenamew tym samym katalogu co aktualnie otwarty plik i zapisze go.

Alternatywnie, niektórzy ludzie lubią Vima, aby zawsze przechodził do katalogu bieżącego pliku. Można to skonfigurować, umieszczając

:set autochdir

do twojego ~/.vimrcpliku (który jest odczytywany przy starcie Vima). Wtedy powyższe staje się proste

:e filename
:w

Wreszcie, Vim ma świetną wbudowaną :help. Naucz się nawigować i przeszukiwać!

Ingo Karkat
źródło
2
autochdirjest niestety niestabilny i stwierdziłem, że nie mogę na nim polegać. Zamiast tego umieściłem autocmd w moim vimrc:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang
1
Dawg też chciałby zagłosować wyżej, ale Dawg nie ma odpowiedniego przedstawiciela. Dzięki za dobrze napisane wyjaśnienie!
Dawg
14

powinieneś spróbować z wtyczką "nerdtree". W oknie nerdtree wpisałeś klawisz m, a opcje operacji na plikach zostaną wyświetlone

harris
źródło
11

Jeśli chcesz utworzyć nowy plik, a także pokazać go w oknie obok bieżącego pliku, możesz spróbować tego:

:vsp newfile

vspOznacza vertical split, i to dzieli ekran na pół, jeden pokazujący aktualny plik, drugi pokazuje swój nowy plik (działa również z właśnie sp, która jest pozioma split).

Zgodnie z komentarzem @ MartinLyne powyżej, spowoduje to utworzenie pliku w katalogu pliku, w którym został otwarty vim. Aby to dostosować, możesz zmienić bieżący katalog roboczy w następujący sposób:

:cd %:p:h

To polecenie zmienia bieżący katalog roboczy na katalog aktywnego pliku, co oznacza, że ​​uruchomienie vsppolecenia (lub dowolnego z poleceń powyżej) spowoduje utworzenie pliku w tym katalogu.

RocketDonkey
źródło
2

Kiedy otworzyłeś Vima w nieistniejącej lokalizacji, takiej jak $ vim /etc/<some_folder/<next_folder>/file.cfg

następnie, aby utworzyć nowy katalog będąc w vimie, po prostu uruchom w trybie normalnym :! mkdir -p /etc/<some_folder/<next_folder>i zamiast zapisywać swój dokument jak zwykle :w :x ZZ(cokolwiek chcesz)

Otóż ​​to

matson kepson
źródło
1

To jest dla Gvima! Wprowadź to, aby zobaczyć bieżący katalog.

:cd

następnie zmień go za pomocą

:cd desktop/somefolder

następnie zapisz lub utwórz tam nowy plik

:enew asd.cpp

teraz ponownie zobacz plik

:cd
Błysk
źródło
0

Spóźniłem się na imprezę, ale inną opcją jest otwarcie NERDtree za pomocą :Elub :Explore(lub jego alternatyw rozdzielających :Vexplore/ :Sexplore== :Vex/ :Sex).

W NerdTree możesz utworzyć nowy plik za pomocą %i wpisać nazwę. Automatycznie otworzy plik i utworzy go po jego :w/ zapisaniu.

mazunki
źródło