Jak sprawić, by zakładki działały normalnie w Xcode 4?

87

Xcode w końcu dodał zakładki, ale problem polega na tym, że zachowują się bardzo dziwnie. Na przykład zachowają otwartą kartę tylko wtedy, gdy została otwarta na nowej karcie.

Jeśli otworzysz plik po prostu klikając w drzewo projektu, Xcode zamknie twoją kartę, gdy tylko klikniesz inny plik w drzewie.

Czy można sprawić, by zachowywały się jak prawdziwe karty i uniemożliwić Xcode ich ponowne użycie? W jaki sposób?

sorin
źródło
18
Ja też uważam, że nawigacja XCode jest szalona i dziwna. Karty, ale także każda karta ma swoją historię, ale historia to nie tylko pliki, to miejsca w plikach ... Poruszanie się za pomocą klawiatury jest po prostu teh suk. „Działa jak w Safari” nie czyni tego dobrze ...
david van brink
1
@davidvanbrink Nie rozumiem, czy interfejs XCode jest w ogóle podobny do filmu ?
bobobobo
1
Myślę, że j03m odpowiedział poprawnie na Twoje pytanie
Błażej

Odpowiedzi:

70

AKTUALIZACJA na rok 2020:

Wreszcie, prawie 10 lat później, Xcode 12.x wydaje się teraz w większości rozwiązywać opisany tutaj problem. W panelu ustawień nawigacji dostępna jest nowa opcja Styl nawigacji , która kontroluje to zachowanie.

To zachowanie ma kilka nowych dziwactw / wyborów projektowych, które wydają się mieć sens, ale wciąż przyzwyczajam się do nowego doświadczenia. Na przykład karta zostanie ponownie wykorzystana, chyba że plik na tej karcie był ostatnio edytowany; taka zakładka jest oznaczona kursywą w tytule.


POPRZEDNIA ODPOWIEDŹ

Nie sądzę, że obecnie możesz uzyskać pożądane zachowanie (lub ja pragnę). Chociaż karty działają jak Safari, nie działają jak karty w innych popularnych środowiskach IDE (Visual Studio lub Eclipse). I dla mnie ten rodzaj jest do bani.

Ogólnie oczekuję, że karty IDE będą przechowywać więcej niż 1 plik otwarty. Więc jeśli kliknę plik w drzewie projektu, spodziewam się, że przełączy się on na zakładkę, którą otworzyłem z tym plikiem - jeśli już go otworzyłem. Zamiast tego XCode 4 zmienia bieżącą kartę na plik, który kliknąłem - tworząc 2 karty z tym samym plikiem. Posiadanie 2 zakładek z tym samym plikiem jest raczej bezużyteczne.

Zmusza to użytkownika do zeskanowania najpierw paska kart, aby sprawdzić, czy plik jest aktualnie otwarty; jeśli nie jest otwarte, możesz spojrzeć na drzewo projektu. Ale jeśli najpierw klikniesz drzewo projektu (co zwykle robię), zostaniesz ukarany, ponieważ właśnie zabiłeś kartę.

Daniel
źródło
1
Prześlij raport o błędzie! Nazwa zakładki powinna odpowiadać aktualnemu plikowi w tej zakładce (!)
mda
13
XCode 6 nadal nie obsługuje kart zgodnie z oczekiwaniami :(
Ivan Marinov,
1
Wydaje się, że naprawiono w XCode 7! Mam to ustawione, więc dwukrotne kliknięcie otwiera się w nowej karcie, a jeśli plik jest już otwarty, przenosi cię do tej karty zamiast do nowej.
chiliNUT
1
chiliNUT. Jak ustawiłeś swoje ustawienia dla tego zachowania? Kiedy klikam dwukrotnie, otwiera plik w nowej karcie, nawet jeśli mam już otwarty plik w istniejącej karcie.
andynil
XCode 10 nadal nie obsługuje kart zgodnie z oczekiwaniami :(
pingu
90

Używam metody podobnej do franków:

  • W Preferencjach> Nawigacja (lub Preferencje> Ogólne w wersjach XCode starszych niż 5) możesz ustawić opcjonalną nawigację na Używa oddzielnej zakładki
  • Teraz opt - kliknięcie pliku w nawigatorze plików otworzy go w nowej karcie
  • Jeszcze lepiej, opt -clicking linki w kodzie otwiera plik docelowy w nowej karcie

Dużym brakującym elementem jest zamiana na już otwartą kartę zawierającą plik, jeśli taki istnieje (lub pozostanie w bieżącym).

drömsynt
źródło
Wspaniale, ta odpowiedź mnie uratowała i możesz także ustawić opcję Podwójne kliknięcie otwórz w nowej karcie
melanke
8
Znajduje się na karcie Nawigacja w Preferencjach (może to być zmiana w Xcode 5). Preferencje -> Nawigacja -> Opcjonalna nawigacja -> Używa
osobnej
To jest dokładnie to, czego szukałem! Zawsze korzystałem z IDE, takich jak VS lub PHPStorm, które używały zakładek i to naprawdę mnie uratowało
hardsetting
3
Dużym brakującym elementem jest zamiana na już otwartą kartę zawierającą plik, jeśli taki istnieje (lub pozostanie w bieżącym). Chciałbym, żeby to zostało dodane
MistyD
3
Nadal nie podoba mi się fakt, że mogę uzyskać dwie zakładki przy otwartym pliku sime. Nie podoba mi się system zakładek obszaru roboczego w Xcode ...
Nuno Gonçalves
24

To nie jest tak naprawdę odpowiedź, ponieważ zawiera rozwiązanie; Przede wszystkim chcę po prostu dołączyć do gry. Ale upvotowanie sprawi, że poczujesz się lepiej i udowodnisz, że Apple się mylił. :)

Problem z implementacją zakładek w Xcode 4 polega na tym, że Apple zaimplementował je jako zakładki obszaru roboczego . Innymi słowy, utworzenie nowej karty zasadniczo tworzy nowy obszar roboczy, każdy z własnymi panelami podrzędnymi z ich konfiguracjami itp. Jest to zasadniczo całe środowisko na każdej karcie. Z tym wyborem wiąże się wiele problemów.

Różni się to od implementacji kart plików w większości IDE / edytorów tekstu, w których zakładka (ogólnie) reprezentuje pojedynczy plik, a każdy plik ma swoją własną kartę.

Problem z kartami obszaru roboczego polega na tym, że istnieje tylko tyle potencjalnych różnych obszarów roboczych, z których moglibyśmy skorzystać, co poważnie ogranicza faktyczne użycie kart w ten sposób. Poza tym dodatkowe przestrzenie robocze stają się po prostu zobowiązaniem, wprowadzając więcej rzeczy, którymi użytkownik aplikacji musi się zająć: na przykład, czym jest widok nawigatora, jaki tryb edytora jest aktywny (standardowy, asystent, wersja), czy konsola debugowania jest otwarta itp. itp. Nagłe przejście do nowej karty oznacza, że ​​musisz się teraz martwić o przywrócenie środowiska do potrzebnej formy, ponieważ istnieje duża szansa, że ​​druga karta nie pozostała w takim stanie, w jakim spodziewaj się, że go znajdziesz. To faktycznie zniechęca do używania zakładek, ponieważ wprowadza więcej pracy w przepływie pracy.

Karty plików nie mają tego problemu (nie licząc specjalnych przypadków, takich jak podzielone okienka widoku), ponieważ zmienia się tylko plik, na który patrzysz, a nie całe środowisko. Co więcej, jeśli zaimplementowane poprawnie, zakładki plików świetnie sprawdzają się jako natychmiastowa historia, umożliwiając szybkie przełączenie się z powrotem do pliku, w którym ostatnio pracowano, przy niewielkim wysiłku. Jedynym sposobem, aby to zrobić w Xcode, jest jawne skonfigurowanie nowego środowiska kart dla każdego pliku, z którym chcesz pracować, ale musisz uważać, aby nie zmienić pliku na tej karcie, ponieważ plik nagle zostanie utracony: znowu więcej pracy dla użytkownika.

Karty obszaru roboczego są również znacznie cięższe niż karty plików, ponieważ jest o wiele więcej do zapamiętania, a przełączanie obszarów roboczych obejmuje znacznie więcej niż przełączanie plików.

Prawda jest taka (i myślę, że większość się ze mną zgodzi) dla programisty zakładki plików są znacznie bardziej przydatne niż zakładki obszaru roboczego, a w obecnym kształcie Xcode wciąż nie ma odpowiedniej implementacji tej funkcji, którą wielu uważa za podstawową wymaganą funkcjonalność w IDE / edytorze.

devios1
źródło
18

Xcode->Preferences->General->Double Click Navigationiz listy wybierz Uses Separate Tab.

Luca
źródło
4
W XCode 5 idziesz doPreferences->Navigation->Double Click Navigation
Gerard
17

Cóż, nie jest to prawdziwa odpowiedź, ale moje osobiste obejście. Prawdziwym problemem dla mnie jest to, że plik otwarty w karcie znika tak łatwo w xcode 4. Ponowne znajdowanie pliku może być czasochłonne, więc lubię, aby były w karcie i tam pozostawały.

Rozwiązałem to (w jakiś sposób) za siebie, dokładnie identyfikując akcje, które wykonuję, które powodują przełączenie karty do innego pliku i zastąpienie ich równoważnymi akcjami, które zamiast tego otwierają nową kartę.

  • Zamiast pojedynczego klikania pliku w nawigatorze, zawsze klikam dwukrotnie, co ustawiłem, aby otworzyć nową kartę
  • Przez większość czasu nie używam nawigatora, ponieważ na każdej karcie ma inny stan otwartych i zamkniętych folderów. Nie jest to dla mnie przydatne. Więc przeszedłem na używanie Option ⌥ Command ⌘ O. Otwierając plik z tej listy trzymam ShiftOption ⌥wciśnięty. W pojawiającym się małym okienku wybieram „nową kartę”.
  • Klikając linki w kodzie ShiftOption ⌥ Command ⌘, również naciskam i otwieram w nowej karcie.

Mam dwie stałe karty do edycji ustawień związanych z celami i przeglądania wyników kompilacji. Całkowicie wyłączyłem wszystkie automatyczne przełączanie kart w ustawieniach wstępnych, ponieważ zauważyłem, że bardzo mnie to rozprasza.

Naprawdę chciałbym uzyskać coś takiego jak pasek ulubionych xcode 3 w xcode 4, był tak prosty w użyciu.

szczery
źródło
2
Chociaż nie jest to „rozwiązanie” (o ile wiem, żadnego nie ma), doceniłem naukę otwierania kart przez „szybkie otwieranie” i klikanie linków w kodzie. Żmudne, ale bardzo przydatne. Dzięki.
ajmccall
8

Wyobrażam sobie, że moja odpowiedź nie pojawi się przez chwilę, ale jeśli chcesz, aby to działało jak Visual Studio lub Intellij (lub przynajmniej bliżej)

Preferencje-> Ogólne-> Podwójne kliknięcie Nawigacja-> Używa osobnej zakładki

Dwukrotne kliknięcie pliku teraz przestanie otwierać go w nowym oknie i otworzy w nowej karcie.

Singiel jest nadal głupi i przejmuje Twoją kartę. Ale jeśli przyzwyczaisz się do podwójnego klikania (co już robiłem), zaoszczędzi ci to trochę bólu głowy. Przypuszczam.

j03m
źródło
To ustawienie zostało już wspomniane powyżej, zobacz stackoverflow.com/a/6666097/239408 stackoverflow.com/a/11029748/239408
xverges
4

Absolutnie nienawidzę, jak działają zakładki w Xcode. Jednak jedynym rozwiązaniem, które znalazłem, które działa przyzwoicie, jest użycie skrótów na kartach OSX: CTRL + CMD + -> CTRL + CMD + <-

mithun_daa
źródło
3

Znalazłem swoją drogę w Preferencjach-Zachowaniach!

Nienawidziłem Xcode 4 jako pierwszy ze względu na omówione tutaj problemy z kartami, głównie dlatego, że informacje debugowania ciągle otwierały nowe pliki w zakładkach i zmieniały nawigator

w Behaviors możesz zdefiniować zakładkę Debug i przeskoczyć tam na różne sposoby. w zakładce Debug daję więcej miejsca nawigatorom na lewo i na dole

z podobnych powodów mam też zakładkę Znajdź

pozostałe zakładki są dla plików, w których piszę. Zaczynam je od .h, który jest zwykle na tyle mały, że potrzebuję tylko jednego widoku, a następnie pojedynczymi kliknięciami w nawigatorze otwieram 2-3 wersje pliku .cpp, więc Mogę ustawić je na lokalizacje, w których znajdują się ostatnio aktywne punkty w pliku. następnie zamykam nawigatory w tych zakładkach

nie unieważnia to troski i sztuczek podanych w innych odpowiedziach, ale czyni je znacznie mniej trudnymi

miłego kodowania!

Matthias Grob
źródło
3

Dowiedziałem się, że naciskając optionaka altpodczas otwierania plików w nawigatorze, przeskoczysz do karty już otwartej z plikiem i otworzy się nowa karta, jeśli nie była jeszcze otwarta.

Ta technika działa również podczas otwierania plików przez cmdshift- Oi otwierania sugestii za pomocą option- enterzamiast po prostu enter...

Teraz, gdyby istniał jakiś sposób, aby uczynić to domyślnym, tj. Potrzeba ciągłego naciskania optionzostałaby usunięta, byłby to duży krok naprzód.

Używam również Zachowań, aby zapobiec ponownemu przetwarzaniu moich kart po błędach testów lub kompilacji.

(Podobnie jak inni ludzie, zupełnie nie podoba mi się zachowanie karty Xcode. Apple powinien przyjrzeć się IntelliJ ...)

Hendrik
źródło
1
Jest to jedna z bardziej pomocnych sugestii dotyczących ponownego wykorzystania istniejących kart. Daleko od idealnego rozwiązania (najwyraźniej takiego nie ma), ale pomaga!
Mason Lee
1

Pasek kart xcode jest tak do niczego, myślę, że Apple powinien ulepszyć funkcję nawigacji po kartach, aby uniknąć przestrzegania 3 punktów. 1. dwukrotne kliknięcie pliku pozwoli xcode otworzyć kolejną kartę, jeśli już tam była. 2. dla większej liczby zakładek zakładka stanie się mała i dlatego nie wiem, w którym pliku, w której zakładce, chcę, aby karta miała pełną nazwę 3. dla jeszcze większej liczby zakładek nowe zakładki będą ukryte zamiast dwóch wierszy zakładek . Chcę, żeby pokazywały dwie linie pasków kart.

lbsweek
źródło
0

Karty w Xcode 4 działają jak karty w innych miejscach w systemie Mac OS X, na przykład w Safari i Terminalu.

Chris Hanson
źródło
Po pierwsze, mówię tutaj o kryteriach otwierania kart, nie ma sensu porównywać z aplikacjami, które nie są zorientowane na projekty . Problem polega na tym, że kliknięcie drzewa projektu wywołuje niezręczne zachowanie związane z otwieraniem kart.
sorin
2
Karty w Xcode 4 zachowują się jak „prawdziwe karty”, ponieważ są zgodne z konwencjami ustalonymi dla kart w pozostałej części systemu operacyjnego. Robią to zgodnie z projektem. Możesz wybrać opcję kliknięcia lub dwukrotnego kliknięcia, aby otworzyć wszystko, co kliknąłeś w nowej karcie (lub oknie) w preferencjach ogólnych; nie możesz zdecydować się na otwarcie nowej karty jednym kliknięciem.
Chris Hanson,
Dokładniej, jeśli klikniesz plik w nawigatorze projektu, Xcode nie „otworzy karty”, a następnie „zamknie tę kartę” po kliknięciu innego pliku w nawigatorze projektu. Xcode pokazuje plik, który kliknąłeś w głównym edytorze bieżącej karty.
Chris Hanson,
1
co powiesz na skrót klawiaturowy do obracania między kartami?
ming yeow
26
Dziecinnie chcę głosować przeciw, ponieważ nienawidzę tego, jak działają karty! Czyni mnie cały Grrrr. :-)
david van brink
0

Jeśli masz włączony pasek kart (Wyświetl / pokaż pasek kart) i dwukrotnie klikniesz plik, pojawi się on w swoim własnym oknie, z pojedynczą kartą ( upewnij się, że pasek kart jest włączony zarówno w nowym, jak i starym (głównym) oknie ).

Teraz wszystko, co musisz zrobić, to przeciągnąć nowe okno z karty i upuścić je na pasku kart w oknie głównym.

wprowadź opis obrazu tutaj

Pozostanie zadokowany jako oddzielna karta, pokazując ten plik.

Aby zmienić plik otwarty w tej nowej karcie, przejdź do Project / Reveal w Project Navigator , co spowoduje otwarcie nawigatora projektu po lewej stronie.

bobobobo
źródło
3
Czy to „wszystko, co musisz zrobić” za każdym razem? ;) Możesz zdefiniować (w Preferencjach-> Zachowanie), że dwukrotne kliknięcie powinno otwierać się w nowej karcie zamiast w nowym oknie, ale to nadal nie poprawia okropnej implementacji zakładek w pierwszej kolejności.
devios1
Skomentowałeś zignorowanie odpowiedzi @ Daniela, ale twoja odpowiedź nie dotyczy faktu, że pojedyncze kliknięcie pliku zmienia plik otwarty na bieżącej karcie. To jest w przeciwieństwie do większości innych IDE i nie ma sensu.
0x6A75616E