2009-09-24 1 views
7

Вот список моихЧто наиболее полезные/используемые команды VIM в C/C++ Dev среде

В отличие от меня - как я делал это в иллюстративных целях - не паста слишком много.

И самое главное, дать объяснение

Команда не должна быть общей, но отношение к окружающей среде C++/C. Ctags & сфера радушны слишком

gi .....................init insert mode in last insertion position 

'0 .....................open last edited file 

gf .....................open file under cursor in same window 

Ctrl-w q ...............close current window 

:setlocal autoread .....Auto reloads the current buffer..especially useful while viewing log files 

for i in range(1,255) | .put='10.0.0.'.i | endfor.... insert range ip's 

g; and g, .......................to move (forward, backward) through the changelist 

fx Move the cursor forward to the next occurrence of the character x on the current line (obviously, x can be any character you like). This is an extremely useful command. You can type ; to repeat the last f command you gave. 

tx Same as above, but moves the cursor to right before the character, not all the way to it. (It's very useful, really.) 

Fx Move the cursor backward to the next occurrence of the character x on the current line. 
w Move the cursor forward by a word. 
b Move the cursor backward by a word. 
0 Move the cursor to the beginning of the current line. 
^ Move the cursor to the first character on the current line. 
$ Move the cursor to the end of the line 


Visual search ....... you can simply yank the selected text with y and go to search mode 
/, then you can paste the last yanked text with Ctrl+R 0 

ci" - cuts the text in current quotes 
ciw - cuts the current word. This works just like the previous one except that (is replaced with w. 
C - cut the rest of the line and switch to Insert mode. 
zz -- it scrolls the screen to make this line appear in the middle 
C - cut the rest of the line and switch to Insert mode. 
de - delete from cursor to the end of the word (you can also do dE to delete until the next space) 
df[space] -- delete up until and including the next space 
bye -- copies current word 
b and e move the cursor word-by-word 
capital D (take a deep breath) Deletes the rest of the line to the right 
cd %:h change to current directory 
:r! <command> pastes the output of an external command into the buffer. 
:%s/foo/bar(&)/g will look for foo, and surround the matched pattern with bar(). 
:s/.*/PREFIX & SUFFIX/ you want to add a prefix and a suffix simultaneously, you can do something like this: 

gd....... keystroke stands for Goto Declaration 
gD....... This takes you to the global declaration of the variable under the cursor 
------------------ 
:make error 
[make_error] 
On pressing RETURN, the cursor moves to line number 6 
Now, the command :cn will move the cursor to the line number 4. 
To move back to the previous error, one can use the command :cN and the cursor will move back to the line 6. 
After correcting the error on line 5 and adding "return 1;", one can run :make again and the output will be 


--------- 
:%!grep sdf | sort -n -k3 

1)select the whole content using '%' 
2) pipe it to an external command using '!' 
3) grep onyl the lines containing 'sdf' 
4) sort these lines numerically (-n) on the third field (-k3) 


d$ will delete from current position to end of line 
d^ will delete from current backward to first non-white-space character 
d0 will delete from current backward to beginning of line 
dw deletes current to end of current word (including trailing space) 
db deletes current to beginning of current word 

:%s/pattern//gn........... For counting the number of times some pattern occurs, use: 

CTRL-O Go to [count] Older cursor position in jump list 
CTRL-I Go to [count] newer cursor position in jump list 


zz - line that has a cursor is in the middle of the screen 
zt - line that has a cursor is in the top of the screen 
zb - line that has a cursor is in the buttom of the screen 

set printoptions=number:y ...set numbers in a hardcopy 
:hardcopy.... to print the file :w 

shift d ...... Deleting from current position to end of line 
vim -o ....... allows you to open two windows, split vertically horizontally 
vim -O ....... allows you to open two windows, split vertically 
CTRL+W CTRL-Q ......to close the current windows 
qall.........How do I quit all windows 

0 ...First position on line 
Ctrl g ...where am I 
:set wrapmargin=70 
printexpr=system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error 

Tab block of code ....select your block of code (with [V]isual line mode normally), then press > or <. 
If you want to tab more than once, 2> or 3> to repeat it. 

Новости:

Guys, let's REOPEN THIS QUESTION, and go WIKI-CRAZY! 
+0

Вы всегда можете посмотреть на http://stackoverflow.com/questions/69871/vim-vi-survival-guide вопрос, который спрашивает: «Каковы основные команды vim?» – amischiefr

+2

хорошо, что они общие, меня особенно интересуют те, кто использует vim для среды разработки C++. – vehomzzz

+0

Итак, все ваши примеры. В vi/vim нет никаких конструкций C++ (что я знаю). – amischiefr

ответ

1

Вы должны взглянуть на SnippetsEmu. Отличный плагин, который сэкономит вам много регулярно вводимых слов в C.

Примечание: Вы спрашиваете о командах, а не о плагинах, но просто хотели упомянуть об этом.

+0

IMO, плагины актуальны: vim сам по себе довольно беден, чтобы развиваться на C++ или даже в C. –

3

Один набор команд, которые мне полезны, [[,]], [],] [. Они перемещаются по фигурным скобкам в первом столбце, поэтому они эффективно позволяют выполнять функции, если вы используете правильный отступ.

3

Это могут быть полезны для программирования

= - намереваться текст. Чтобы сделать отступ всех файлов г CTRL + V G =

CTRL-P/Ctrl-O - чтобы полный текст

} у - чтобы вставить блок и Отступ его правильно в новом месте. Например, блок кода в буфере обмена - это 2-уровневый отступ и должен быть вставлен в код, где он будет находиться в 3-уровневом отступе.

CTRL-X + е в полное имя файла

>>/< < - увеличение/уменьшение отступа

% - дойдя до соответствующих открытия/закрытия кронштейн

minibufexpl - хороший плагин для работы сразу по нескольким файлам

3

>aB Отступ в блок. Не часто используется, но драгоценный камень тем не менее.

+0

Вам нужно сначала визуально выбрать блок? – vehomzzz

+0

Нет, просто найдите курсор внутри блока, который вы хотите отступом. :) –

+1

@Andrei - ": help text-objects" даст вам лучшее представление обо всех командах с аналогичной структурой. В этом случае «B» также может быть «{» или «}» с тем же значением (я считаю, что это легче запомнить). Вы можете применить любой оператор (например, d для удаления или v для выбора), а также счетчик до этого, чтобы применить к блоку. –

2

Использование различных видов полезна для сравнения кода.
Обратите внимание, что каждый вид, созданный разделом, может содержать отдельный файл.

Чтобы разделить точку зрения по горизонтали

:split 

Чтобы разделить точку зрения по вертикали

:vsplit 

Для перемещения между разделенными видами

^W<arrow>  (Thats control W) (Arrow Key) 

После того, как вы создали файл тегов:

^]    (Move over identifier you want to find: Hit Control ]) 
:tn   Next Tag 
:tp   Previous Tag 
:pop   Pop back to the place you where when you hit ^] 
+0

+1 Потому что мои сеансы vim разделены адами - даже если я не использую напрямую: sp и: vsp для этого. –

4

Те, которые я перестарайтесь являются следующие:

  • :AV вертикально разделить текущее окно и открыть заголовок/исходный файл, связанный с соответствующим файлом источника/заголовка (если она еще не открыта, в противном случае мы переходим к его окно вместо этого)
  • :GSp and :GVSp разделить текущее окно и открыть требуемый файл (который находится где-то в & пути), или перейти к файлу, если он уже открыт
  • <m-x> для переключения комментария на текущей строке
  • :Make составить текущий проект в фоновом режиме - NB: флаг должен быть установлен для того, чтобы сделать это
  • <c-x>be добавить .begin(), /container_name/.end() в whatever(container_name<curoser_here>)
  • #i, которая будет расширяться в #include
  • :DOX который будет добавьте комментарий doxygen к прототипу текущей функции - учитываются параметры const/ref-ness, throw spec, тип возврата
  • :GOTOIMPL, который будет создавать тело по умолчанию из текущего объявления функции (или перейти к уже существующему корпус когда возможно ле)
  • <c-w><m-down>: еще один способ навигации базовых тегов
  • for/if/...: расширить в соответствующий фрагмент кода в режиме вставки (за пределы строки комментария/контекст)
  • ,for/,if/.. and ,,for/,,if/... окружать текущий выбор соответствующего фрагмент кода , выбор будет идти в тело контрольно-операторов (один,), или его состояния (два,)
  • tpl расширяется в template <<cursor>><+placeholder+>
  • все текстовые объектные движения с =, D, C, ... + di,/vi,/..., который действует на текущий параметр
  • <c-x>v, <c-x>t для извлечения выбранного переменный/типа (рефакторинга)
  • All the bracket opening characters + <m-del> поддерживать сбалансированные кронштейны

Есть много других команд, которые я использую, когда я развиваю в C++, но реже - просто изучить ссылки я дано.

1

Лучшее, что я когда-либо использовал, когда использовал комбинацию running make и Quickfix. Я нажал F6 для компиляции, а затем F7 для перемещения назад через ошибки и F8 для перемещения вперед, используя номера строк в выводе gcc warning/error.Быстрее, чем alt-tab, нажмите вверх.

 Смежные вопросы

  • Нет связанных вопросов^_^