notebook

Some random notes...

суббота, 4 октября 2008 г.

.vimperatorrc - горячие клавиши в русской раскладке

Ниже - несколько полезных настроек для vimperator, в том числе: перемещение по закладкам с помощью стрелок или CTRL + h/l; перемещение самих закладок с помощью
SHIFT + стрелки или SHIFT + CTRL + h/l; и работающие клавиши vimperator'а при включенной русской раскладки.

Для хранения настроек vimperator использует файл .vimperatorrc, который должен находится в домашней папке. У меня на Windows XP - это "C:\Documents and Settings\User\.vimperatorrc".

Для того, чтобы в русской раскладке команды vimperator'а работали, необходимо,
чтобы текст .vimperatorrc был в кодировке UTF-8.

Текст файла .vimperatorrc:

" select next/previous tab
map <Right> gt
map <Left> gT
map <C-l> gt
map <C-h> gT

" move current tab left/right
map <S-Right> :tabmove! +1<CR>
map <S-Left> :tabmove! -1<CR>
map <C-L> :tabmove! +1<CR>
map <C-H> :tabmove! -1<CR>

" Russian language keyboard mappings (UTF-8)

map ё `
map й q
map ц w
map у e
map к r
map е t
map н y
map г u
map ш i
map щ o
map з p
map х [
map ъ ]
map ф a
map ы s
map в d
map а f
map п g
map р h
map о j
map л k
map д l
map ж ;
map э '
map я z
map ч x
map с c
map м v
map и b
map т n
map ь m
map б ,
map ю .
map Ё ~
map Й Q
map Ц W
map У E
map К R
map Е T
map Н Y
map Г U
map Ш I
map Щ O
map З P
map Х {
map Ъ }
map Ф A
map Ы S
map В D
map А F
map П G
map Р H
map О J
map Л K
map Д L
map Ж :
map Э "
map Я Z
map Ч X
map С C
map М V
map И B
map Т N
map Ь M
map Б <
map Ю >

Cкачать .vimperatorrc

Ярлыки: , ,

vimperator - основные команды

С чего начать
F1 - вызов справки
:set go=mT - вернуть меню и toolbar
(нажать :, в командной строке набрать set go=mT)

: - командная строка
/ - поиск на странице

o + url - перейти на url
t + url - перейти на url в новой закладке
d - закрыть закладку
u - отменить закрытие закладки
f - быстрые ссылки, переход в текущей закладке
(ссылки нумеруются, после ввода номера переходим по ссылке)
F - быстрые ссылки, переход в новую закладку

hjkl - прокрутка страницы лево/низ/верх/право
gg/G - перейти к началу / концу страницы
C-b/space - page up / page down
y - копировать url в буфер
p - вставить url из буфера

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


- Moving -
hjkl - лево/низ/верх/право
Space/C-b - scroll down/up by one page
C-d/C-u - scroll down/up by 1/2 page
gg - page top
G - page end
]f / [f - focus next|prev frame
gi - focus last input

- Zoom -
+ / - - zoom in|out

- History -
C-o/C-i - move Back/Forward in the history
H/L - -//-
:ju - history list for tab

- Tabs -
B - list tabs
:b index - go to tab №index

gt/C-n - go to the next tab
gT/C-p - go to the previous tab
g0/g$ - go to the first/last tab
d - close the active tab (delete the buffer)
u - undo close tab
:[count]tabd - Duplicates current tab [count] times

- Browsing -
o,:o - open
t,:t - tabopen
O = :open + current url
:open ~ - открыть домашнюю папку (file browser)
:open C: - открыть диск C:

p - open clipboard url
P - open clipboard url in a new tab

r - reload page
R - reload skipping cache
C-c - stop loading of current page

gu - go to parent directory
gU - go to root of website

f - hints for this page

F - hints for new tab
;{mode}{hint} - Start an extended hint mode.
; to focus a link and hover it with the mouse
a to save its destination (prompting for save location)
s to save its destination
o to open its location in the current tab
t to open its location in a new tab
O to open its location in an :open query
T to open its location in a :tabopen query
v to view its destination source
w to open its destination in a new window
W to open its location in a :winopen query
y to yank its destination location
Y to yank its text description
f to open its location in the current tab
F to open its location in a new tab


- Other -
[count]C-x - Decrements the last number in URL by 1, or by count if given.
[count]C-a - Increments the last number in URL by 1, or by count if given.

C-g - print file name
g C-g - print file info
:pa - page info

:w - save page

gf - view source
gF - view source in external editor

:!{cmd}
Run a command. Runs {cmd} through system() and displays its output.
Any '!' in {cmd} is replaced with the previous external command.
But not when there is a backslash before the '!', then that backslash is removed.

- Copy -
y - copy url to clipboard
Y - copy selection to clipboard
visual mode
i - Start caret mode. This mode resembles the Vim normal mode where you
see a text cursor and can move around. If you want to select text in
this mode, press v to start its Visual mode.
Нажимаем i ставим курсор куда нужно,
Потом - v - двигаем курсор, выделяется текст

--------------
:xall - command to quit and save the current browsing session for next time;
the default.
:qall - command to quit without saving the session
ZZ - normal mode mapping equivalent to :xall
ZQ - normal mode mapping equivalent to :qall

--------------
:cd [-|path] - Change the current directory. :cd - changes to the last directory.
:pw :pwd - Print the current directory name.

F1, :h - help
:viu - normal mode commands list
:exu - help on Ex commands

----------------

:dialog - To access some of Firefox's many dialog windows, :help :dialog
:bmarks - Vimperator provides a new interface to bookmarks
:history - It's exactly what it sounds like.
:addons
:downl - downloads

:dialog printpreview and :dialog printsetup
The "Print Preview" and "Page Setup" dialogs can be opened via the :dialog command

:emenu + команда (+tab - список) - доступ к главному меню firefox


:res[tart] - Force the browser to restart. Useful when installing extensions.

Disable vimperator
CTRL-Z
Disable all Vimperator keys except and pass them to the next event handler.
This is especially useful, if JavaScript controlled forms like the RichEdit form
fields of Gmail don't work anymore. To exit this mode, press .
If you also need to pass in this mode to the web page, prepend it with CTRL-V.

C-v CTRL-V
If you only need to pass a single key to a JavaScript form
field or another extension prefix the key with .
Also works to unshadow Firefox shortcuts like which are otherwise
hidden in Vimperator. When Vimperator mode is temporarily disabled
with , will pass the next key to Vimperator instead of the web page.


------ Settings -----------------------------
Настройки
$HOME/.vimperatorrc
Unix and Mac: ~/.vimperatorrc then ~/_vimperatorrc
Windows - ~/_vimperatorrc then ~/.vimperatorrc

:mkv[imperatorrc][!] [file]
Write current key mappings and changed options to [file].
If no [file] is specified then ~/.vimperatorrc is written unless
this file already exists. The special version :mkvimperatorrc!
will overwrite [file] if it exists.


:set go=mT - показать меню и тулбар

Ярлыки: , ,

Denwer - доступ по сети, настройка отправки почты

Для доступа к apache denwer'a по сети - дописать в httpd.conf:
Listen *:80
Для доступа к mysql по сети - закомментировать в \etc\scripts\init.d\mysql.pl
строку "--bind-address=127.0.0.1",

Отправка почты
По умолчанию почта складывается в \tmp\!sendmail.
Для реальной отправки почты нужно сделать так (в php.ini):
[mail function]
SMTP = mail.server.org
; sendmail_from = denwer@localhost ВАЖНО!!!!
; с mail'ом denwer@localhost ПИСЬМА НЕ ОТСЫЛАЮТСЯ!
sendmail_from = php@localhost.com

; sendmail_path = \usr\sbin\sendmail -t -i

Maintis - настройка отправки почты

Для настройки отправки почты в мантисе нужно установить следующие переменные
в файле mantis\config_defaults_inc.php :

# SMTP сервер
$g_smtp_host = '192.168.100.254';

# Будем использовать функцию mail(), а не phpMailer
$g_use_phpMailer = OFF;

# Включить уведомления по почте
$g_enable_email_notification = ON;

# Set to OFF on Windows systems, as long as php-mail-function has its bcc-bug (~PHP 4.0.6)
$g_use_bcc = OFF;

Следующая настройка - в файле config_inc.php, выставление этой опции в
config_defaults_inc.php не давало результата, я думаю config_inc.php
перекрывает настройки из config_defaults_inc.php.

# the "From: " field in emails
$g_from_email = "mantis@server";

С++ Builder: как ускорить компиляцию с помощью предкомпилированных заголовков (часть 2 - практика)

Практический инструмент для управления предкомпилированными заголовками можно скачать с сайта andy.jgknet.de
Пакет представляет собой plugin к IDE C++ Builder и "убивает" сразу двух зайцев - автоматизирует работу с предкомпилированными заголовками и заменяет встроенный диалог компиляции на свой.

Необходимость замены процедуры компиляции обусловлена наличием ошибки в IDE - эта ошибка вызывает значительное(!) замедление компиляции.
В наличии ошибки вы можете убедиться сами - сделайте build одного и того же проекта из IDE и запомните время компиляции. Затем скомпилируйте проект из командной строки с помощью команд:

bpr2mak Project.bpr
make -B -f Project.mak

Вместо Project.bpr нужно указать имя bpr-файла вашего проекта, утилиты bpr2mak и make находятся в папке "\Program Files\Borland\CBuilder6\Bin".
У меня проверка на достаточно большом проекте показала следующее:

Command line - 622 сек = 10.3 мин
IDE - 1306 сек = 21.76 мин

Т.е. разница во времени - более чем в два раза.
Теперь подробнее о самом пакете - на сайте разработчика их несколько: Bcc32Pch C++Builder IDE Plugin, IDE Console Compiler, IDE Compiler Speed Fix. Первый - это универсальный пакет, который включает остальные два, его я и предлагаю использовать.

После установки пакета, можно настроить его свойства в Tools->Configure Compiler Enhancements. Кроме того, появляются новые пункты в меню Project, в том числе Create PCH file - создает h-файл для предкомпилированного заголовка). Подробнее описывать не буду - во-первых на сайте разработчика
есть достаточно подробное описание, во-вторых использование и настройка пакета достаточно понятны и без описания.

Ярлыки: ,

С++ Builder: как ускорить компиляцию с помощью предкомпилированных заголовков (часть 1 - теория)

Precompiled headers can dramatically increase
compilation speeds ...
С++ Builder Language Guide

Вместо вступления сразу приведу пример. Полная сборка (build) проекта, содержащего около 170 cpp-модулей, при использовании предкомпилированных заголовков происходит за 811 секунд, при этом число обработанных компилятором строк составляет 1,808,780. При компиляции того же проекта без использования предкомпилированных заголовков, время сборки составляет 2399 секунд, а число строк, обработанных компилятором - 45,261,820. Впечатляет, не так ли? Плата за это ускорение, в принципе не велика - предкомпилированный образ, размер которого около 40 Мб.

При компиляции исходных текстов, компилятор должен обработать все *.cpp файлы проекта и все включенные в них *.h - файлы. При этом обрабатываются как пользовательские заголовочные файлы, так и стандартные, такие как vcl.h или Word2k.h. Количество кода, находящегося в стандартных заголовках может быть очень большим, например размер файла Word2k.h превышает 5 Мб, в нем больше 130 000 строк кода.

Так как содержимое стандартных заголовков не изменяется, то их компиляция при каждой сборке проекта является напрасной тратой времени. Предкомпилированные заголовки помогают решить эту проблему - стандартные файлы компилируются один раз, а затем используется скомпилированный двоичный образ.

Принцип действия предкомпилированных заголовков
Для управления предкомпилированными предназначена директива компилятора #pragma hdrstop. Все заголовочные файлы, включенные до этой директивы, помещаются в один образ, например:

#include "vcl.h"
#include "string"
#pragma hdrstop


Такая последовательность создаст образ, содержащий скомпилированные vcl.h и string. Этот образ будет использован для другого cpp-файла, если в нем до директивы hdrstop будут включены те же файлы, в том же порядке. Обращу внимание, что важен не только состав, но и порядок следования заголовков - даже если следующий cpp-файл включает те же заголовки, но сначала указан string, а потом vcl.h, то для этого cpp-файла будет создан новый образ.

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

Сократить затраты на компиляцию стандартных заголовков до минимума можно только в том случае, если скомпилировать один образ, содержащий все стандартные заголовки, необходимые для проекта. Для этого нужно, чтобы:
- ВСЕ cpp-файлы проекта имели одинаковый блок включений до директивы hdrstop
- в этот блок должны входить ВСЕ стандартные заголовочные файлы, необходимые для проекта

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

#include "pch.h"
#pragma hdrstop


где pch.h - файл, содержащий включения всех стандартных заголовков:


#ifndef PCH_H
#define PCH_H

#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
#include "vcl.h"

#include "sysset.h"
#include "inifiles.hpp"
#include "appevnts.hpp"
#include "actnman.hpp"
...
#endif


Полный текст моей версии этого файла приведен в конце статьи. На h-файлы, входящие в предкомпилированный образ, накладывается ограничение - в них не должно быть инициализированных данных, например, в math.hpp есть строки:


static const Extended NaN = 0.0 / 0.0;
static const Extended Infinity = 1.0 / 0.0;


Из-за наличия этих констант включить math.hpp в файл pch.h нельзя.
Кстати, С++ Builder при добавлении новых модулей в проект реализует описанную стратегию управления предкомпилированными заголовками. Например, при создании нового приложения, файл Unit1.cpp будет таким:


#include "vcl.h"
#pragma hdrstop

#include "Unit1.h"
....


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

Управлять составом включаемых в vcl.h заголовков можно с помощью специальных символов (INC_VCLDB_HEADERS, INC_VCLEXT_HEADERS и др.). В моей версии pch.h эти символы определяются с помощью #define до включения vcl.h, что приводит к увеличению числа включаемых файлов.

Как в существующем проекте перейти к использованию предкомпилированных заголовков

Даже в большом проекте перейти к использованию предкомпилированных заголовков достаточно просто.

В свойствах проекта нужно включить кэширование предкомпилированных заголовков и рекомендуется указать "персональный" файл, в котором будет храниться образ предкомпилированных заголовков: Project - Options - закладка Compiler, группа "Pre-compiled headers". Тут должно быть выбрано "Cache pre-compiled headers", а в поле "File Name" нужно ввести "pch.csm". При такой настройке образ с предкомпилированными заголовками будет находится в папке с проектом, в файле pch.csm.

После этого в начало каждого cpp-модуля необходимо вставить 2 строки:


#include "pch.h"
#pragma hdrstop


Все ранее включенные заголовочные файлы остаются на своих местах, их удалять не надо. Например:


#include "pch.h" // включает vcl.h, string и т.д.
#pragma hdrstop

#include "vcl.h"
#include "string"
...


Так как во всех стандартных заголовках применяются стражи повторного включения, то повторное их упоминание не влечет за собой повторного включения.

В принципе, при использовании pch.h, техническая потребность во включении стандартных заголовков исчезает. Однако, полезно все же указывать все необходимые для каждого конкретного модуля заголовки ниже директивы #pragma hdrstop. Во-первых, это в некоторой степени документирует модуль - по включаемым файлам можно судить, какими возможностями пользуется этот модуль. Во-вторых, это облегчает повторное использование модуля в других проектах, в которых либо не используется pch.h, либо его содержимое может быть другим.

Теоретически можно еще больше повысить эффективность компиляции, если включить в pch.h не только стандартные, но и все пользовательские заголовочные файлы. Практически, так как пользовательские заголовки меняются достаточно часто, это может повлечь за собой частую перекомпиляцию pch.h, что негативно скажется на времени компиляции. Кроме того, пользовательские заголовки обычно не бывают очень большими и компилируются очень быстро. Поэтому включать их pch.h не целесообразно.

Как проверить, что предкомпилированные заголовки используются эффективно

При добавлении в проект новых файлов нужно не забывать включать в них pch.h, иначе для них не будет использован общий предкомпилированный образ. Такая же ситуация может возникнуть, если в каком-то модуле включаются стандартные заголовки, которые не вошли в pch.h. Для того, чтобы отследить такие файлы, есть несколько способов:
- визуальное наблюдение за процессом компиляции. Обычно, число строк компилируемых в одном файле не должно превышать 10000-15000 строк
- если для проекта выбран индивидуальный файл для хранения образа предкомпилированных заголовков и этот файл называется pch.csm, то нужно обратить внимание на наличие вспомогательных файлов с именами pch.#00, pch.#01 и т.д. Если для всех файлов проекта используется один и тот же предкомпилированный образ, то вспомогательный файл должен быть только один - pch.#00. Если таких файлов больше, это значит что для каких-то cpp-модулей создаются дополнительные образы.

Текст pch.h


#ifndef PCH_H
#define PCH_H

#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
#include "vcl.h"
/* Все, что подключается предыдущими 3-мя строчками
// Core (minimal) Delphi RTL headers
#include "System.hpp"
#include "Types.hpp"
#include "Windows.hpp"
#include "Messages.hpp"
#include "SysUtils.hpp"
#include "Classes.hpp"

// Core (minimal) VCL headers
#if defined(INC_VCL)
#include "Controls.hpp"
#include "Graphics.hpp"
#include "Forms.hpp"
#include "Dialogs.hpp"
#include "StdCtrls.hpp"
#include "ExtCtrls.hpp"

// VCL Database related headers
#if defined(INC_VCLDB_HEADERS)
#include "DBCtrls.hpp"
#include "DB.hpp"
#include "DBTables.hpp"
#endif // INC_VCLDB_HEADERS

// Full set of VCL headers
#if defined(INC_VCLEXT_HEADERS)
#include "Buttons.hpp"
#include "ChartFX.hpp"
#include "ComCtrls.hpp"
#include "DBCGrids.hpp"
#include "DBGrids.hpp"
#include "DBLookup.hpp"
#include "DdeMan.hpp"
#include "FileCtrl.hpp"
#include "GraphSvr.hpp"
#include "Grids.hpp"
#include "MPlayer.hpp"
#include "Mask.hpp"
#include "Menus.hpp"
#include "OleCtnrs.hpp"
#include "OleCtrls.hpp"
#include "Outline.hpp"
#include "Tabnotbk.hpp"
#include "Tabs.hpp"
#include "VCFImprs.hpp"
#include "VCFrmla1.hpp"
#include "VCSpell3.hpp"
#endif // INC_VCLEXT_HEADERS

#endif // INC_VCL
*/

#include "sysset.h"
#include "IniFiles.hpp"
#include "AppEvnts.hpp"
#include "ActnMan.hpp"
#include "ActnCtrls.hpp"
#include "BandActn.hpp"
#include "CustomizeDlg.hpp"
#include "ImgList.hpp"
#include "ToolWin.hpp"
#include "ExtDlgs.hpp"
#include "ActnList.hpp"

#include "IBDatabase.hpp"
#include "IBCustomDataSet.hpp"
#include "IBQuery.hpp"
#include "IBTable.hpp"
#include "IBSQL.hpp"
#include "IBServices.hpp"

#include "math.h"
#include "assert.h"
#include "complex.h"
#include "values.h"

#include "map"
#include "list"
#include "set"
#include "vector"
#include "algorithm"
#include "functional"
#include "string"
#include "memory"
#include "fstream"

//нестандартные компоненты RxLib и EhLib
#include "CURREDIT.hpp"
#include "RXSpin.hpp"
#include "RxCalc.hpp"
#include "RxCombos.hpp"
#include "APPUTILS.hpp"
#include "RXDBCtrl.hpp"
#include "Placemnt.hpp"
#include "DBGridEh.hpp"

#endif


Ярлыки: ,

Borland C++ Builder - hotkeys

В среде Borland C++ Builder есть ряд возможностей, которые повышают удобство использования редактора и отладчика, некоторые из них доступны как через пункты меню, так и с помощью горячих клавиш, однако многие доступны только с клавиатуры.

Я не буду описывать "известные" сочетания, такие, как Ctrl+C / Ctrl+V, которые работают в большинстве Windows-приложений. Кроме того, описанные ниже возможности - это не полный список, а только те функции, которые лично я применяю в своей работе.

Описанные ниже клавиатурные команды относятся к Borland C++ Builder 6, хотя некоторые из них могут работать и в более ранних версиях, также я использую вариант клавиатурных команд по-умолчанию (Tools - Editor Options - Key Mappings tab - Default), для других вариантов клавиатурные сокращения могут отличаться от приведенных.

1. Управление окнами редактора:
Кратко:
F12 - переключатель форма/модуль
Ctrl + F6 - переключатель cpp/h файл
Ctrl+Enter - открыть файл под курсором
Ctrl+Tab/Ctrl+Shift+Tab - передвижение по закладкам редактора вперед/назад
Ctrl+F12 - список модулей проекта
Alt+0 - список открытых окон IDE

Подробно:
F12 - переключатель форма/модуль. Эта функция работает для модулей, которые связаны с dfm-формами. При нажатии F12 в режиме редактирования формы мы переключаемся на соответствующий cpp-файл и наоборот, находясь в режиме редактирования cpp- или h-файла с помощью F12 можно перейти к форме.
Ctrl + F6 - переключатель cpp/h файл. Для переключения между cpp и h файлом предназначена функция контекстного меню редактора "Open Source/Header file", клавиатурное сочетание для вызова этой функции - Ctrl + F6.
Другой удобной возможностью редактора является "связывание" cpp и h-файлов, когда они показываются в виде закладок в нижней части окна редактора, что позволяет сократить количество открытых в редакторе окон. Точно не помню, в какой версии BCB появилась эта возможность, по моему в пятой или в шестой, до этого все файлы отображались на закладках в верхней части редактора. Связь между файлами поддерживается за счет директивы #ifndef - #define в заголовочном файле, прямое назначение которой - не допускать повторных включений h-файла. Предположим, у нас есть файлы mainFile.cpp и mainFile.h. Эти файлы будут "связаны" друг с другом редактором (т.е. появятся на закладках в нижней части), если начало файла mainFile.h будет таким:

#ifndef mainFileH
#define mainFileH

Если заменить mainFileH на mainFile_HeaderH (или на что-либо другое), это никак не повлияет на основную функцию этого макроса - повторных включений этого заголовочного файла производится не будет. Однако это повлияет на вспомогательную функцию - связь между h и cpp файлом будет разорвана и закладки в нижней части редактора исчезнут.
Ctrl+Enter - открыть файл под курсором. Эта функция доступна также в контекстном меню редактора - "Open File at Cursor".
Ctrl+Tab / Ctrl+Shift+Tab - передвижение по закладкам редактора. Если в редакторе открыто несколько окон с исходными файлами, то можно перемещаться между окнами вперед с помощью Ctrl+Tab, а назад - с помощью Ctrl+Shift+Tab.
Ctrl+F12 - список модулей. При использовании данного сочетания выводится окно, содержащее список исходных файлов проекта. В верхней части этого окна есть строка, отображающее имя выбранного в текущий момент файла. Эта же строка может использоваться для поиска нужного файла - если начать набирать имя файла, то будет осуществляться инкрементальный поиск файла. И еще одна полезность - при открытии окна в нем автоматически выбирается текущий активный файл в редакторе.
Shift+F12 - список форм. При использовании данного сочетания клавиш открывается окно, содержащее список форм проекта. Работа с этим окном аналогична работе с описанным выше окном списка модулей.
Alt+0 - список открытых окон IDE. Обычно у меня на экране не хватает места, чтобы расположить на нем сразу все нужные окна IDE - это может быть редактор, инспектор объектов, окно TreeView, редактор формы и что-нибудь еще. Так как для редактора нужно больше пространства, то он имеет привычку накрывать собой другие, более мелкие окна. Чтобы найти "спрятанные" окна IDE можно воспользоваться сочетанием Alt+0, которое выводит окно со списком всех открытых окон.

2. Операции с выделенным текстом:
Кратко:
Shift+arrow - выделение обычного блока, в режиме выделения колонками - выделение блока-колонки
Alt+Shift+arrow - выделение блока-колонки
Ctrl+O+C/Ctrl+O+K - включить/выключить режим выделения колонками (колонки будут выделяться при использовании Shift+arrow)
Ctrl+K+I/Ctrl+K+U - передвижение выделенного блока вперед / назад на одну позицию табуляции

Подробно:
Shift+arrow - это, в принципе, общеизвестное сочетание для выделения текста - при нажатом Shift, перемещение курсора стрелками вызывает выделение текста. Обычно тест выделяется построчно, но в режиме выделения колонками тест это сочетание позволяет выделять прямоугольные блоки.
Alt+Shift+arrow - выделение прямоугольного блока (или блока-колонки). Иногда выделение текста в виде прямоугольного блока может быть гораздо более удобным, чем построчное выделение. При копировании прямоугольного блока вставка происходит иначе, чем при копировании обычного блока - имея какой-то текст, можно вставить прямоугольный блок рядом с этим текстом, слева или справа. После выделения прямоугольного блока (с помощью Alt+Shift+arrow) происходит переключение в режим выделения колонок, выключить этот режим можно либо щелкнув мышью в любом месте редактора, либо нажав Ctrl+O+K.
Ctrl+O+C / Ctrl+O+K - включает / выключает режим выделения колонками. При включенном режиме выделения колонками, сочетание Shift+arrow будет выделять прямоугольные блоки. Кроме того комбинации Ctrl+O+C / Ctrl+O+K позволяют преобразовать уже выделенный блок из обычного в прямоугольный и обратно. Щелчек мыши в любом месте редактора отключает режим выделения колонками.

3. Инкрементальный поиск:
Кратко:
Ctrl+E - перейти в режим инкрементального поиска (F3 - искать дальше)
Alt+Ctrl+"Up arrow"/Alt+Ctrl+"Down arrow" - перейти к предыдущему/следующему такому же слову в тексте

Подробно:
Ctrl+E - включает режим инкрементального поиска. После нажатия этого сочетания клавиш, в строке состояния редактора появляется приглашение "Searching for:". При последующем наборе текста, будет производится поиск этого текста в окне редактора. При вводе искомого текста можно использовать Backspace для удаления одного символа. После того, как искомая строка набрана, клавиша F3 позволяет найти эту строку дальше по тексту. Преимущество инкрементального поиска перед обычным - ускорение работы, так как он позволяет избежать отображения диалогового окна поиска (вызывается по Ctrl+F), недостаток - отсутствие дополнительных параметров поиска, которые есть в диалоге.
Alt+Ctrl+"Up arrow" / Alt+Ctrl+"Down arrow" - перейти к предыдущему / следующему такому же слову в тексте. В принципе, это сочетание - тоже довольно удобное средство поиска. Находясь на каком-либо слове, например имени функции, можно поискать в текущем файле вхождения данной функции - вверх по файлу Alt+Ctrl+"Up arrow", вниз по файлу - Alt+Ctrl+"Down arrow".

4. Режим отладки
Кратко:
Ctrl+F7 - окно Evaluate/Modify - просмотр/копирование и изменение значения переменной
Al+Ctrl+W - окно Watches
F8 - пошаговое выполнение без заходов в функции
F7 - пошаговое выполнение с заходами в функции
F4 - выполнить до курсора
Shift+F8 - выполнить текущую функцию до возврата
Ctrl+F2 - прервать выполнение программы
F5 - установить / убрать точку останова

Подробно:
Ctrl+F7 - открывает окно Evaluate/Modify - окно позволяет просмотреть/изменить значение переменной. Кроме того, можно скопировать значение, что удобно при просмотре тестовых свойств. Я, например, часто копирую значение Query->SQL->Text, чтобы выполнить запрос к базе данных из IBExpert.
Al+Ctrl+W - открывает окно Watches, если оно уже открыто, то оно выводится на передний план.
F8 - пошаговое выполнение без заходов в функции, доступно из меню Run - Step Over.
F7 - пошаговое выполнение с заходами в функции, доступно из меню Run - Trace Into
F4 - выполнить до курсора, доступно из меню Run - Run to Cursor
Shift+F8 - выполнить текущую функцию до возврата, и остановиться в точке возврата из функции. Доступно из меню Run - Run Until Return. Это сочетание особенно полезно, когда по F7 попадаешь не в ту функцию, вместо того чтобы проходить по ее содержимому, можно просто нажать Shift+F8.
Ctrl+F2 - прервать выполнение программы, доступно из меню Run - Program Reset.
F5 - установить / убрать точку останова. По поводу точек останова замечу, что у них есть расширенные свойства, такие как, например условие останова. Отобразить и настроить эти свойства можно либо щелкнув правой кнопкой мыши по уже установленной точке останова и выбрав "Breakpoint properties...", либо добавив точку останова через меню Run - Add Breakpoint - Source Breakpoint...".

5. Другие полезные сочетания
Кратко:
Alt+F7/Alt+F8 - передвижение вверх / вниз по списку ошибок и предупреждений, выданных компилятором
Ctrl+"Up arrow"/Ctrl+"Down arrow" - прокрутить текст в редакторе на строку вверх / вниз без перемещения курсора
Ctrl+Shift + (0..9) - установить / убрать закладку 0..9
Ctrl + (0..9) - перейти к закладке 0..9
Ctrl+Shift+Space - отображение параметров функции
Ctrl+Space - отображение методов объекта
Alt + < / Alt + > - отображение парной открывающей / закрывающей скобки

Подробно:
Alt+F7 / Alt+F8 - передвижение вверх / вниз по списку ошибок и предупреждений, выданных компилятором. После редактирования исходного кода в большом объеме, обычно, по крайней мере у меня, список ошибок тоже бывает внушительным. Щелчок мыши по сообщению об ошибке вызывает переход к файлу и строке, где эта ошибка обнаружена, перейти к следующей ошибке без использования мыши можно с помощью комбинации Alt+F7, к предыдущей - с помощью Alt+F8.
Ctrl+"Up arrow"/Ctrl+"Down arrow" - прокрутить текст в редакторе на строку вверх / вниз без перемещения курсора. Это удобно, если несколько интересующих строк не отображаются на экране. При использовании этих комбинаций, курсор остается в той же строке, где он и был до прокрутки.
Ctrl+Shift + (0..9) - установить / убрать закладку 0..9. Закладки - это очень полезная возможность, которой я постоянно пользуюсь. Закладки нумеруются внутри каждого файла отдельно.
Ctrl + (0..9) - перейти к закладке 0..9. С помощью закладок можно пометить несколько мест внутри исходного файла и затем быстро находить эти места. Если делать то же самое без закладок, используя прокрутку, то процесс поиска нужных мест становится просто мучительным.
Ctrl+Shift+Space - отображение параметров функции. По-умолчанию, эта функция редактора включена - при наборе имени функции и следующей открывающей скобки выпадает список параметров этой функции. Однако, в большом проекте этот процесс так "тормозит", что я эту функцию обычно отключаю (убираю флажок Tools->Editor Options->Code Insight->Code Parameters). Для того, чтобы вручную отобразить параметры функции, я пользуюсь сочетанием Ctrl+Shift+Space.
Ctrl+Space - отображение методов объекта. Как и в случае отображения параметров функции, автоматическое отображение методов я отключаю (убираю флажок Tools->Editor Options->Code Insight->Code Completion). Для того, чтобы вручную отобразить методы и поля объекта, я пользуюсь сочетанием Ctrl+Space.
Alt + < / Alt + > - отображение парной открывающей / закрывающей скобки, работает и для скобок "(", ")" и для скобок "{", "}". Раскладка должна быть включена английская, курсор должен находится перед скобкой.

6. Сводная таблица
Сводная таблица содержит все описанные выше сочетания клавиш. Ее можно напечатать и иметь под рукой на случай, если какое-то сочетание вылетело из головы. Это помогает быстрее запомнить все сочетания клавиш, применение которых может ускорить работу при написании исходных кодов и их отладке.
Управление окнами редактора
F12 - переключатель форма/модуль
Ctrl + F6 - переключатель cpp/h файл
Ctrl+Enter - открыть файл под курсором
Ctrl+Tab/Ctrl+Shift+Tab - передвижение по закладкам редактора вперед / назад
Ctrl+F12 - список модулей проекта
Alt+0 - список открытых окон IDE
Операции с выделенным текстом
Shift+arrow - выделение обычного блока, в режиме выделения колонками - выделение блока-колонки
Alt+Shift+arrow - выделение блока-колонки
Ctrl+O+C / Ctrl+O+K - включить / выключить режим выделения колонками (колонки будут выделяться при использовании Shift+arrow)
Ctrl+K+I / Ctrl+K+U - передвижение выделенного блока вперед / назад на одну позицию табуляции
Инкрементальный поиск
Ctrl+E - перейти в режим инкрементального поиска (F3 - искать дальше)
Alt+Ctrl+"Up arrow" / Alt+Ctrl+"Down arrow" - перейти к предыдущему / следующему такому же слову в тексте
Режим отладки
Ctrl+F7 - окно Evaluate/Modify - просмотр/копирование и изменение значения переменной
Al+Ctrl+W - окно Watches
F8 - пошаговое выполнение без заходов в функции
F7 - пошаговое выполнение с заходами в функции
F4 - выполнить до курсора
Shift+F8 - выполнить текущую функцию до возврата
Ctrl+F2 - прервать выполнение программы
F5 - установить / убрать точку останова
Другие полезные сочетания
Alt+F7/Alt+F8 - передвижение вверх / вниз по списку ошибок и предупреждений, выданных компилятором
Ctrl+"Up arrow"/Ctrl+"Down arrow" - прокрутить текст в редакторе на строку вверх / вниз без перемещения курсора
Ctrl+Shift + (0..9) - установить / убрать закладку 0..9
Ctrl + (0..9) - перейти к закладке 0..9
Ctrl+Shift+Space - отображение параметров функции
Ctrl+Space - отображение методов объекта
Alt + < / Alt + > - отображение парной открывающей / закрывающей скобки

Ярлыки: ,