KDevelop5/Підручник/Робота з кодом програм
Робота з кодом програм
Окрім зневаджування, читання та написання коду є найважливішими завданнями під час розробки програмного забезпечення. З метою полегшення навігації кодом та його написання у KDevelop передбачено багато різних інструментів. Як буде докладніше показано у наступних розділах, KDevelop не просто редактор коду, — це скоріше система керування кодом, яка може подавати різні дані, отримані на основі аналізу загальної сукупності коду всього вашого сеансу роботи.
Інструменти та панелі перегляду
Для роботи з проектами у KDevelop передбачено інструменти. Інструмент надає певні дані щодо коду або виконує з ним певну дію. Інструментам відповідають кнопки вздовж периметра вікна програми (з вертикальним текстом на полях ліворуч і праворуч та горизонтальним вздовж нижнього поля). Якщо ви натиснете таку кнопку, у головному вікні буде відкрито підвікно — панель перегляду; якщо кнопку буде натиснуто ще раз, відповідне підвікно буде закрито.
На наведеному вище зображенні ви можете бачити певний набір інструментів, вирівняних за лівим і правим полем. Ліворуч відкрито панель інструмента
, праворуч — . Посередині можна бачити панель редактора. З практичних міркувань, переважну частину часу розробки варто працювати лише з редактором та панеллю чи , відкритою ліворуч. На час використання певного інструмента можна відкрити його панель, яку після використання варто закрити з метою збільшення простору для панелі редактора.Після першого запуску KDevelop ви вже зможете скористатися кнопкою інструмента
. Натисніть цю кнопку: у відповідь буде відкрито панель зі списком проєктів, які було додано до сеансу у нижній частині вікна та панель перегляду файлової системи вашого проєкту у верхній його частині.У KDevelop ви можете скористатися багатьма іншими інструментами, не всі з них представлено кнопками вздовж периметра вікна у початковому стані. Щоб додати кнопку, скористайтеся пунктом меню . У результаті буде відкрито вікно для вибору бажаної панелі. У контекстному вікні ви зможете натискати кнопки ліворуч, вниз, праворуч для пересування панелей і вибору місця розташування панелей. Ось перелік можливих корисних інструментів:
- Класи: повний список всіх класів, які визначено у одному з проектів або у вашому сеансі з усіма вбудованими функціями та змінними. Натискання пункту елемента класу відкриє вікно редактора з місцем оголошення елемента, пункт якого було натиснуто.
- Документи: тут буде показано список поточних відкритих у редакторі файлів.
- Перегляд коду: залежно від розташування курсора у редакторі файла, на цій панелі буде показано пов’язані з кодом дані. Наприклад, якщо курсор перебуває у рядку з
#include
, на панелі буде показано дані щодо файла, який включено до коду, зокрема дані щодо оголошених у файлі класів. Якщо курсор перебуває на порожньому рядку у файлі, на панелі буде показано класи і функції, оголошені і визначені у поточному файлі (всі як посилання: натискання відповідного пункту відкриватиме файл з оголошенням або визначенням класу чи функції). Якщо курсор перебуває на визначенні функції, на панелі буде показано місце оголошення та список місць, у яких використано функцію.
- Файлова система: показує ієрархічну структуру файлової системи.
- Документація: надає вам змогу виконувати пошук даних на сторінках довідника (man) та у інших довідкових документах, зокрема документації до C++, Qt, PHP тощо.
- Фрагменти: на цій панелі буде наведено фрагменти тексту, які використовують вами регулярно, і які ви не хочете повторно вводити кожного разу. У прикладі, на основі якого було створено знімок екрана, була потреба часто використовувати фрагмент коду Цей вираз завжди використовуватиметься у такій формі кожного разу — чудовий кандидат на включення до списку фрагментів.
if(vcs->isVersionControlled(source)) { VcsJob* job=vcs->copy(source, target); if(job) { return job->exec();
- Konsole: відкриває панель командного рядка у головному вікні KDevelop, щоб ви могли віддати потрібну вам команду оболонки (наприклад, виконати
./configure
).
Для багатьох програмістів найважливішою є економія вертикального місця на екрані. Щоб досягти такої економії, ви можете розташувати панелі інструментів вздовж лівої та правої межі вікна програми. Щоб пересунути панель, клацніть на заголовку правою кнопкою миші і виберіть нове її розташування.
Огляд роботи з кодом
Локальні дані
KDevelop розуміє код програми, тому це середовище може надавати вам дані щодо змінних або функцій вашої програми. Наприклад, у цьому підручнику наведено знімок роботи з фрагментом коду, де вказівник миші наведено на символ cell
у рядку 1316 (якщо ви надаєте перевагу роботі за допомогою клавіатури, того самого ефекту можна досягти утримуванням певний час натиснутою клавіші Alt):
KDevelop показує підказку, зокрема тип змінної (тут: container
), де цю змінну оголошено (контейнер, яким тут є функція-обгортка operator()(AreaIndex *index)
, оскільки це локальна змінна), тип даних (змінна, не функція, клас або простір назв) та місце оголошення (у рядку 376, декількома рядками коду вище).
У поточному контексті з символом, на який наведено вказівник миші, не пов’язано жодної документації. У нашому прикладі, де вказівник миші наведено на символ Container
у рядку 376, буде показано такі дані:
Тут KDevelop показано оголошення зі стороннього файла (container.h
, який є частиною зовсім іншого проекту того самого сеансу) разом з коментарем у форматі doxygen, який супроводжує цей оголошення.
Кориснішими ці підказки робить те, що вони є динамічними: ви можете клацнути на пункті контейнера, щоб отримати відомості щодо контексту, у якому оголошено змінну (тобто щодо простору назв Sublime
, зокрема того, де її оголошено, визначено, використано або якою є її документація), і ви можете клацнути на розфарбованих у синє посилань для перенесення позиції курсора до місця оголошення символу (наприклад, у container.h
, рядок 40) або отримання списку місць, де цей символ використано у поточному файлі або в усіх проєктах поточного сеансу. Останній варіант часто корисним, якщо ви хочете вивчити те, як, наприклад, певну функцію використано у великій кодовій базі.
Дані щодо окремих файлів
Наступним рівнем є отримання даних щодо всього файла коду, над яким ви працюєте. Щоб переглянути її, розташуйте курсор на початку поточного файла і подивіться на дані, які буде показано на панелі інструмента Перегляд коду:
Тут середовищем показано список просторів назв, класів та функцій, оголошених або визначених у поточному файлі. За допомогою цього списку ви можете ознайомитися з загальними даними щодо дій, які виконуються у файлі, та безпосередньо перейти до будь-якого з оголошень або визначень без потреби у гортанні коду файла або пошуку певного фрагмента.
Дані щодо проектів та сеансів
Існує багато способів отримати загальні дані щодо проекту (або, фактично, всіх проектів сеансу). Такі дані, зазвичай, можна знайти на панелях перегляду різноманітних інструментів середовища. Наприклад, на панелі інструмента
показано ієрархічну структуру всіх класів і зовнішніх просторів назв для всіх проектів сеансу, разом з вбудованими функціями та змінними кожного з цих класів:Знову ж таки, за допомогою наведення вказівника миші на запис у списку можна отримати дані щодо відповідного символу, розташування його оголошення та визначення і випадків використання. Подвійним клацанням на пункті цього ієрархічного списку можна відкрити вікно редактора на позиції, де оголошено або визначено символ.
Але існують інші способи вивчення загальних відомостей. Наприклад, інструмент
надає панель перегляду документів, які відкрито, і надає можливість вибору одного з документів для перегляду і безпроблемного пересування від одного документа до іншого:Ви також можете вибрати пункт із маленькою коробкою із чотирма кубиками у верхньому правому куті, щоб отримати список відкритих файлів, який має назву робочий набір. Кожен рядок починається з поля для позначки, позначення якого вилучає файл з робочого списку. Також буде показано кнопку у правій частині, натискання якої надає вам змогу виконати записування до реєстру git. Корисно, якщо вам потрібно перейти до іншої гілки або до повністю іншого проєкту.
Пояснення щодо розфарбовування коду
KDevelop використовує різноманітні кольори для підсвічування різних об'єктів у початковому коді. Якщо ви знаєте призначення різних кольорів, ви можете швидко отримати багато інформації з початкового коду простим його переглядом (за кольорами) навіть не читаючи сам код. Правила підсвічування такі:
- Objects of type Class / Struct, Enum (the values and the type), (global) functions, and class members each have their own color assigned (classes are green, enums are dark red, and members are dark yellow or violet, (global) functions are always violet).
- Усі загальні змінні буде розфарбовано у темно-зелений.
- Ідентифікатори, які є визначеннями типів для інших типів буде розфарбовано у синьо-зелений колір.
- Усі оголошення та визначення об'єктів буде показано напівжирним шрифтом.
- Якщо доступ до учасника класу отримується з контексту, де його визначено (базового або похідного класу), його буде показано жовтим. Якщо ж це не так, його буде показано фіолетовим.
- Якщо член класу є приватним (private) або захищеним (protected), його буде розфарбовано у дещо темніший колір при використанні.
- For variables local to a function body scope, rainbow colors are picked based on a hash of the identifier. This includes the parameters to the function. An identifier always will have the same color within its scope (but the same identifier will get a different color if it represents a different object, i.e. if it is redefined in a more nested scope), and you will usually get the same color for the same identifier name in different scopes. Thus, if you have multiple functions taking parameters with the same names, the arguments will all look the same color-wise. These rainbow colors can be turned off separately from the global coloring in the settings dialog.
- Ідентифікатори, для яких KDevelop не вдалося визначити відповідне оголошення, буде розфарбовано білим кольором. Іноді причиною такого розфарбовування є пропущені директиви
#include
.
- На додачу до цього розфарбовування буде застосовано звичайне розфарбовування синтаксичних конструкцій редактора, які відомі з Kate. Семантичне підсвічування у KDevelop завжди перевизначає підсвічування редактора, якщо виникне конфлікт.
Пересування між фрагментами коду
У попередньому розділі ми обговорювали вивчення коду програми, тобто отримання даних щодо символів, файлів та проектів. Наступним кроком є перехід між компонентами коду, тобто навігація кодом. Знову ж таки, існує декілька рівнів, на яких можна здійснювати подібну навігацію: локально, у межах файла і у межах проекту.
Пересування поточним фрагментом
KDevelop — набагато більше, ніж просто редактор, — це також редактор коду. Тому, звичайно ж, ви можете пересувати курсор текстом за допомогою звичайних клавіш зі стрілочками. Ви також можете скористатися натисканням клавіш PageUp та PageDown і всіма іншими командами, якими можна скористатися у звичайному текстовому редакторі.
Пересування файлами та режим огляду
На рівні окремого файла у KDevelop передбачено багато способів навігації кодом програми. Приклад:
- Схема: ви можете переглянути схему вмісту поточного файла в один із принаймні трьох різних способів:
- Clicking on the Tool View button that is generally located on the left border.There is a button to sort everything in ascending or descending order and a filter edit box. You can then just select which one to jump to, or — if there are a lot — start typing any text that may appear in the names shown in the filter edit box. In that case, as you keep typing, the list becomes smaller and smaller as names are removed that don't match the text already typed until you are ready to select one of the choices.
- Hot-keys Alt + Ctrl + N opens a dialog box that lists all function and class declarations.This also provides you with an outline of what is happening in the current file, allows you to search if the list is long, and allows you to select where you want to jump to.
- The code browser toolbar has a line edit in the toolbar that you can type in a function or class name to quickly find it, or just click in the line edit and it shows an outline. If an item in the pop-up is clicked, you get the tooltip for the item with information and links about its definition and usage.
- Source files are organized as a list of function declarations or definitions. Hitting Alt + Ctrl + PgUp and Alt + Ctrl + PgDown jumps to the previous or next function definition in this file.
Пересування проектами та сеансами: семантичне пересування
As mentioned in other places, KDevelop does not usually consider individual source files but rather looks at projects as a whole (or, rather, at all projects that are part of the current session). As a consequence, it offers many possibilities for navigating through entire projects. Some of these are derived from what we have already discussed in the section on Exploring source code while others are genuinely different. The common theme is that these navigation features are based on a semantic understanding of the code, i.e. they offer you something that requires parsing entire projects and connecting data. The following list shows some ways how to navigate through source code that is scattered throughout a potentially very large number of files:
- As seen in the section on Exploring source code, you can get a tooltip explaining individual namespace, class, function or variable names by hovering your mouse over it or keeping the Alt key pressed for a while. Here is an example: Clicking on the links for the declaration of a symbol or expanding the list of uses allows you to jump to these locations, if necessary opening the respective file and placing the cursor at the corresponding location. A similar effect can be achieved by using the Code Browser tool view also discussed previously.
- Quick open: A very powerful way of jumping to other files or locations is to use the various quick open methods in KDevelop. There are four versions of these:
- Quick open class (Alt + Ctrl + C): You will get a list of all classes in this session. Start typing (a part of) the name of a class and the list will continue to whittle down to only those that actually match what you've typed so far. If the list is short enough, select an element using the up and down keys and KDevelop will get you to the place where the class is declared. or
- Quick open function (Alt + Ctrl + M): You will get a list of all (member) functions that are part of the projects in the current session, and you can select from it in the same way as above. Note that this list may include both function declarations and definitions. or
- Quick open file (Alt + Ctrl + O): You will get a list of all files that are part of the projects in the current session, and you can select from it in the same way as above. or
- Universal quick open (Alt + Ctrl + Q): If you forget which key combination is bound to which of the above commands, this is the universal swiss army knife — it simply presents you with a combined list of all files, functions, classes, and other things from which you can select. or
- Jump to declaration/definition: When implementing a (member) function, one often needs to switch back to the point where a function is declared, for example to keep the list of function arguments synchronised between declaration and definition, or to update the documentation. To do so, place the cursor onto the function name and select Ctrl + .) to get to the place where the function is declared. There are multiple ways to get back to the original place:
- Selecting Ctrl + ,). (or hitting
- Selecting Meta + Left), as described below. (or hit
(or hit
- Перемкнути визначення/оголошення: у наведеному вище прикладі для переходу до місця оголошення поточної функції нам потрібно було спочатку розташувати курсор на назві функції. Якщо вам не хочеться цього робити, скористайтеся пунктом меню Shift + Ctrl + C), щоб перейти до оголошення функції, у якій перебуває курсор. Повторний вибір цього пункту меню поверне курсор назад до визначення функції. (або натисніть комбінацію клавіш
- Previous/Next use: Placing the cursor on the name of a local variable and selecting Meta + Shift + Right) transports you to the next use of this variable in the code. (Note that this doesn't just search for the next occurrence of the variable name but in fact takes into account that variables with the same name but in different scopes are different.) The same works for the use of function names. Selecting (or hitting Meta + Shift + Left) transports you to the previous use of a symbol. (or hitting
- The context list: Web browsers have this feature where you can go backward and forward in the list of most recently visited web pages. KDevelop has the same kind of features, except that instead of web pages you visit contexts. A context is the current location of the cursor, and you change it by navigating away from it using anything but cursor commands — for example, by clicking on a location provided by a tooltip, in the Meta + Left) and (Meta + Right) transports you along this list of visited contexts just like the and buttons of a browser transports you to the previous or next webpage in the list of visited pages. You can also use the code browser toolbar that gives you the option to click the left arrow to go backwards to a previous file and line number, or choose the down arrow that provides a pop-up list of previous files and line number to be chosen. tool view, one of the options given in the menu, or any other navigation command. Using the (
- Finally, there are tool views that allow you to navigate to different places in your codebase. For example, the Classes tool provides you with a list of all namespaces and classes in all projects of the current session, and allows you to expand it to see member functions and variables of each of these classes: Double-clicking on an item (or going through the context menu using the right mouse button) allows you to jump to the location of the declaration of the item. Other tools allow similar things; for example, the tool view provides a list of files that are part of a session: Again, double-clicking on a file opens it.
Введення коду
Оскільки KDevelop «розуміє» код ваших проектів, це середовище може допомогти вам у написанні коду. Нижче наведено огляд деяких з цих допоміжних можливостей.
Автозавершення
Ймовірно, найкориснішою можливістю є можливість з автоматичного завершення фрагментів коду. Розглянемо, наприклад, такий фрагмент коду:
class Car {
// ...
public:
std::string get_color () const;
};
void foo()
{
Car my_ride;
// ...do something with this variable...
std::string color = my_ride.ge
У останньому рядку KDevelop запам’ятає, що змінна my_ride
належить до типу Car
і буде автоматично пропонувати доповнення назви вбудованої функції ge
у форматі get_color
. Фактично, вам достатньо вводити назву, аж доки список знайдених відповідників не починатиметься з потрібного вам виразу, а потім натиснути клавішу Enter:
Зауважте, що ви можете клацнути на панелі підказки, щоб отримати більше даних щодо функції, окрім типу даних, які вона повертає, і те, чи є ця функція відкритою (public):
Auto-completion can save you a lot of typing if your project uses long variable and function names; furthermore, it avoids mis-spelling names (and the resulting compiler errors) and it makes it much simpler to remember the exact names of functions. For example, if all of your getters start with get_
, then the auto-completion feature will be able to only present you a list of possible getters when you have typed the first four letters, likely reminding you in the process which of the functions is the correct one. Note that for auto-completion to work, neither the declaration of the Car
class nor of the my_ride
variable need to be in the same file as where you are currently writing code. KDevelop simply has to know that these classes and variables are connected, i.e. the files in which these connections are made need to be part of the project you are currently working on.
Додавання нових класів та реалізація вкладених функцій
У KDevelop передбачено допоміжну програму для додавання нових класів. Її роботу описано у розділі Створення класу. Простий клас C++ можна створити за допомогою основного шаблона C++ з категорії Клас. У допоміжній програмі ви можете вибрати попередні функції-елементи, наприклад порожній конструктор, конструктор копіювання та деструктор.
Після завершення роботи допоміжної програми буде створено і відкрито у редакторі нові файли. Основу файла заголовків вже створено, а у новому класів є всі вибрані нами вбудовані функції. Наступними двома кроками мають бути документування класу та його вбудованих функцій та реалізація цих класів і функцій. Нижче ми обговоримо допоміжні засоби з документування класів і функцій. Щоб реалізувати спеціальні функції, які ми вже додали, просто перейдіть на вкладку
, де вже є каркас наших функцій:Щоб додати нові вкладені функції, поверніться на вкладку
і додайте назву функції. Наприклад, можна додати таке:Зауважте, що реалізацію вже розпочато. Але у межах багатьох стилів програмування функції не слід реалізовувати у файлах заголовків, це слід робити у відповідних файлах .cpp. Для цього розташуйте курсор на назві функції і скористайтеся пунктом меню Ctrl + Alt + S. Код між фігурними дужками буде пересунуто з файла заголовків (його буде замінено на крапку з комою для завершення оголошення функції) до відповідного файла коду:
або натисніть комбінацію клавішВведення коду розпочато. Змінна students
має, ймовірно, бути вбудованою змінною класу Bus
, але її ще не додано до цього класу. KDevelop підкреслено цю змінну, щоб позначити те, що середовищу ще нічого не відомо про цю змінну. Цю проблему просто розв’язати: натискання назви змінної відкриє таку панель підказки:
Нарешті, метод використання пункту меню inline
і розташування його у нижній частині файла заголовків. У такому разі вкажіть оголошення і почніть введення визначення функції ось так:
Оголошення для документування
Хороший код завжди добре документовано, як на рівні реалізації алгоритмів у функціях, так і на рівні інтерфейсу, — тобто класи (вбудовані і загальні) функції та (вбудовані і загальні) змінні слід документувати, щоб всім було зрозумілим їхнє призначення, можливі значення аргументів, попередні та остаточні умови тощо. У документуванні інтерфейсів фактичним стандартом є формат коментарів doxygen, дані його можна видобути і показати на придатних для пошуку інтернет-сторінках.
У KDevelop передбачено підтримку коментарів у цьому форматі за допомогою скорочення для створення оболонки-коментаря, який документуватиме клас або вбудовану функцію. Наприклад, припустімо ви вже створили такий код:
class Car {
public:
std::string get_color () const;
};
Тепер нехай вам потрібно додати документацію для класу і вбудованої функції. Для цього пересуньте курсор на перший рядок коду і скористайтеся пунктом меню Alt + Shift + D. KDevelop відкриє таке діалогове вікно:
або натисніть комбінацію клавішКурсор вже перебуває у затіненій області, щоб ви могли ввести короткий опис (після ключового слова doxygen @brief
) цього класу. Тепер ви можете продовжити додавати документацію до цього коментаря, який краще пояснюватиме призначення класу:
When you get to the end of a line, hit Enter and KDevelop will automatically start a new line that starts with an asterisk and indent the cursor by one character. After documenting an item and Enter is hit outside of the documentation area, the gray highlight is removed.
Тепер виконаємо документування вбудованої функції. Знову розташуйте курсор на рядку оголошення і виберіть пункт меню Alt + Shift + D:
або натисніть комбінацію клавішЗнову ж таки, KDevelop автоматично створить каркас коментаря разом з документації щодо самої функції, а також типом даних, які вона повертає. У нашому випадку назва функції доволі очевидно описує її призначення, але часто аргументи функції можуть бути доволі неочевидними, їх слід документувати окремо. Наприклад, розгяньмо трохи цікавішу функцію та коментар, який автоматично створить для неї KDevelop:
У нашому прикладі у запропонованому коментарі вже містяться всі поля Doxygen для окремих параметрів.
Перейменування змінних, функцій і класів
Іноді виникає потреба у перейменуванні функції, класу або змінної. Наприклад, нехай маємо такий код:
Нехай пізніше ми зрозуміємо, що назва remove_students
є невдалою, і її варто назвати, скажімо, throw_out_students
. Ви могли б виконати пошук з заміною назви функції, але у такого способу є два недоліки:
- Функцію може бути використано у декількох файлах.
- Нам потрібно перейменувати лише цю функцію і не чіпати функції, які можуть мати ту саму назву, але які оголошено у інших класах або просторах назв.
Обидві ці проблеми можна розв’язати наведенням курсора на всі використання назви функції з наступним вибором пункту
(або клацанням правою кнопкою миші на назві з вибором пункту ). У відповідь буде відкрито діалогове вікно, за допомогою якого ви зможете ввести нову назву функції і переглянути всі місця, де використано функцію:Фрагменти коду
У більшості проектів зустрічаються фрагменти коду, які доводиться використовувати доволі часто. Приклади: інструкції компілятора, цикл для всіх інструкцій, для функцій запису інтерфейсу користувача перевірки введених користувачем даних без відкриття вікна повідомлення про помилку. У проекті автора цього підручника часто використовується такий різновид коду:
for (typename Triangulation<dim,spacedim>::active_cell_iterator;
cell = triangulation.begin_active();
cell != triangulation.end(); ++cell)
... Робимо щось із cell ...
Rather than typing this kind of text over and over again (with all the concomitant typos one introduces), the Tools and views if the corresponding button isn't already on the perimeter of your window). Or, go to in the top menubar, and turn on . Then click on the button (a slight misnomer — it allows you to create a named collection of snippets for source codes of a particular kind, e.g. C++ sources) and create an empty repository. Then click to add a snippet, to get a dialog like the following:
tool of KDevelop can help here. To this end, open the tool view (seeIf no snippet repository has been created yet and your project is based on C++, Using the menu choice
creates a repository named ISO C++ snippets and puts your snippets in it as shown above. To the right of the Create Snippet dialog box is a view of the snippets tool view showing the snippets available for use.
Щоб скористатися таким чином визначеним фрагментом, вам слід просто почати вводити у коді його назву, як ви це робите для будь-яких інших функцій або змінних. Для введених літер буде відкрито панель автоматичного доповнення (це означає, що можна використовувати будь-які достатньо довгі для розрізнення назви фрагментів, зокрема назви, подібні до використаної нами), якщо ви виберете відповідний пункт фрагмента на панелі підказки автоматичного доповнення (наприклад, натисканням клавіші Enter), вже введену частину назви фрагмента буде замінено повним текстом фрагмента з відповідними відступами:
Note that for this to work, the
tool view need not be open or visible. An alternative way to insert a snippet is to simply click on it in the snippet tool view. By hovering the mouse over the snippet, it gives you a view of the code in the snippet.
Режими і робочі набори
If you've gotten this far, take a look at the upper right of the KDevelop main window you will see a code button. When the button is pushed, you will see that there are two options offered: Working with version control systems) and (see Debugging programs).
(seeДля кожного з режимів передбачено власний набір інструментів, кнопки яких розташовано вздовж периметра вікна середовища, для кожного режиму передбачено власний робочий набір відкритих файлів і документів. Крім того, кожен такий робочий набір пов’язано з поточним сеансом, тобто маємо взаємозв’язок, подібний до показаного вище. Зауважте, що файли у робочому наборі є частиною одного сеансу, але можуть належати до різних проектів, які є частинами цього сеансу.
If you open KDevelop the first time, the working set is empty — there are no open files. But as you open files for editing (or debugging, or reviewing in the other modes) your working set grows. You will notice that whenever you close KDevelop and later start it again, the working set is saved and restored, i.e. you get the same set of open files.
If you hover your mouse over the symbol for the working set, you get a tooltip that shows you which files are currently open in this working set (here: the helper.h
, helper.cpp
, filemanagerlistjob.h
and filemanagerlistjob.cpp
files). The working set icon can have different colors at different times in it, but they have no specific meaning. Clicking on the square with a minus sign closes the tab for the corresponding file in the working set. The point about closing a working set, however, is that it doesn't just close all files, it actually prompts you to save the file if any are changed but not saved and opens a new, still empty one.
Деякі корисні клавіатурні скорочення
У редакторі KDevelop використано стандартні клавіатурні скорочення для звичайних дій з редагування. Ці скорочення можна змінити, якщо у вас виникне така потреба.
Передбачено пункт для налаштовування і зберігання різних схем клавіатурних скорочень. За допомогою відповідного вікна ви можете експортувати та імпортувати будь-які ваші схеми.
Втім, передбачено також підтримку декількох додаткових дій при редагуванні початкового коду. Деякі з цих дій пов'язано із натисканням певних комбінацій клавіш. Зокрема, часто є зручними такі комбінації:
Пересування кодом | |
---|---|
Ctrl+Alt+O | Пришвидшене відкриття файла: вкажіть частину назви файла і виберіть той з них у каталозі проектів поточного сеансу, який вам потрібен; цей файл і буде відкрито. |
Ctrl+Alt+C | Пришвидшене відкриття класу: вкажіть частину назви класу і виберіть ту з назв класів, яка вам потрібна; курсор буде переведено до рядка оголошення класу. |
Ctrl+Alt+M | Пришвидшене відкриття функції: вкажіть частину назви функції (частини класу) і виберіть з запропонованих варіантів той, який вам потрібен; зауважте, що у списку буде показано оголошення і визначення, а курсор буде переведено до вибраного вами пункту. |
Ctrl+Alt+Q | Універсальне пришвидшення відкриття: вкажіть будь-які дані (назву файла, назву класу, назву функції), і вам буде показано список всіх частин проекту, які відповідають критерію пошуку. |
Ctrl+Alt+N | Огляд: показує список всіх дій, які виконуються у файлі, наприклад, оголошень класів та визначень функцій. |
Ctrl+, | Перейти до визначення функції, якщо курсор перебуває у місці її оголошення. |
Ctrl+. | Перейти до оголошення функції або змінної, якщо курсор перебуває у позиції визначення функції. |
Ctrl+Alt+PageDown | Перейти до наступної функції |
Ctrl+Alt+PageUp | Перейти до попередньої функції |
Ctrl+G | Перейти до рядка |
Пошук і заміна | |
Ctrl+F | Знайти |
F3 | Знайти далі |
Ctrl+R | Замінити |
Ctrl+Alt+F | Знайти і замінити у декількох файлах |
Інші команди | |
Ctrl+_ | Згорнути один рівень: вилучити блок з перегляду, наприклад, якщо ви бажаєте зосередитися на загальнішій картині у функції. |
Ctrl++ | Розгорнути один рівень: скасувати згортання. |
Ctrl+D | Зняти коментування з позначеного фрагмента тексту або поточного рядка. |
Ctrl+Shift+D | Додати позначки коментаря до позначеного тексту або поточного рядка. |
Alt+Shift+D | Документувати поточну функцію. Якщо курсор перебуває на оголошенні функції або класу, натискання цієї комбінації клавіш призведе до створення коментаря у форматі doxygen зі списком параметрів, значень, які повертаються, тощо. |
Ctrl+T | Поміняти місцями поточний і попередній символи |
Ctrl+K | Вилучити поточний рядок (зауваження: ця дія не збігається за результатом з дією «вилучити звідси до кінця рядка» у emacs) |