Ответ 1
Я действительно хотел бы знать, что вы можете использовать Ctrl C вместо Esc, чтобы выйти из режима вставки. Это было для меня настоящим повышением производительности.
Я постоянно изучаю новые команды в Vim, но уверен, что все время от времени узнают что-то новое. Я только недавно узнал об этом:
zz, zt, zb - позиционировать курсор в середине, вверху или внизу экрана
Какие еще полезные или элегантные команды вы бы хотели выучить давным-давно?
Я действительно хотел бы знать, что вы можете использовать Ctrl C вместо Esc, чтобы выйти из режима вставки. Это было для меня настоящим повышением производительности.
Самый последний трюк "wow", который я узнал, - это метод сложного поиска и замены. Довольно часто в прошлом у меня было очень сложное регулярное выражение для выполнения замещений, и это не сработало. Существует лучший способ:
:set incsearch " I have this in .vimrc
/my complicated regexp " Highlighted as you enter characters
:%s//replace with this/ " You don't have to type it again
"Трюк" здесь (за отсутствием лучшего слова) - это способ, которым вы можете использовать поиск для создания регулярного выражения (и "incsearch" выделяет его при вводе символов), а затем используйте пустой шаблон в подстановке: пустой шаблон по умолчанию соответствует последнему шаблону поиска.
Пример:
/blue\(\d\+\)
:%s//red\1/
Эквивалент:
:%s/blue\(\d\+\)/red\1/
См:
:help 'incsearch'
:help :substitute
Я создал эту ссылку моей самой используемой команды для моего друга. Люди надежды найдут что-то полезное:
select v
select row(s) SHIFT + v
select blocks (columns) CTRL + v
indent selected text >
unindent selected text <
list buffers :ls
open buffer :bN (N = buffer number)
print :hardcopy
open a file :e /path/to/file.txt
:e C:\Path\To\File.txt
sort selected rows :sort
search for word under cursor *
open file under cursor gf
(absolute path or relative)
format selected code =
select contents of entire file ggVG
convert selected text to uppercase U
convert selected text to lowercase u
invert case of selected text ~
convert tabs to spaces :retab
start recording a macro qX (X = key to assign macro to)
stop recording a macro q
playback macro @X (X = key macro was assigned to)
replay previously played macro * @@
auto-complete a word you are typing ** CTRL + n
bookmark current place in file mX (X = key to assign bookmark to)
jump to bookmark `X (X = key bookmark was assigned to
` = back tick/tilde key)
show all bookmarks :marks
delete a bookmark :delm X (X = key bookmark to delete)
delete all bookmarks :delm!
split screen horizontally :split
split screen vertically :vsplit
navigating split screens CTRL + w + j = move down a screen
CTRL + w + k = move up a screen
CTRL + w + h = move left a screen
CTRL + w + l = move right a screen
close all other split screens :only
* - As with other commands in vi, you can playback a macro any number of times.
The following command would playback the macro assigned to the key `w' 100
times: [email protected]
** - Vim uses words that exist in your current buffer and any other buffer you
may have open for auto-complete suggestions.
gi переключается в режим вставки, помещая курсор в том же месте, что и раньше.
:q!
Я бы хотел знать, что до того, как я впервые начал vi
^ X-F завершает использование имен файлов из текущего каталога. Больше не копировать/вставлять с терминала или мучительную двойную проверку.
^ X-P завершает использование слов в текущем файле
: set scrollbind заставляет один буфер прокручиваться рядом с другим. например разделите ваше окно на две вертикальные панели. Загружайте один файл в каждый (возможно, разные версии одного и того же файла). Сделайте :set scrollbind
в каждом. Теперь, когда вы прокручиваете один, обе панели будут прокручиваться вместе. Идеально подходит для сравнения файлов.
Никогда не отжимайте escape. См. этот ответ, чтобы узнать, почему. Как упоминалось выше, ctrl-c - лучшая альтернатива. Я настоятельно рекомендую отображать ваш ключ блокировки шапков для выхода.
Если вы редактируете совместимый ctags язык, используя файл тегов и: ta, ctrl-] и т.д., это отличный способ для навигации по коду даже в нескольких файлах. Кроме того, ctrl-n и ctrl-p завершение с использованием файла тэгов - отличный способ сократить нажатие клавиш.
Если вы редактируете строку, которая завернута, потому что она шире вашего буфера, вы можете перемещаться вверх/вниз с помощью gk и gj.
Попытайтесь сосредоточиться на эффективном использовании команд движения, прежде чем изучать вредные привычки. Такие вещи, как использование 'dt' или 'd3w' вместо того, чтобы нажимать x кучу раз. В принципе, в любое время, когда вы часто повторяете один и тот же ключ, возможно, лучший/более быстрый/более сжатый способ выполнить одно и то же.
Вы можете использовать весь набор команд для изменения текста внутри скобок/круглых скобок/кавычек/тегов. Это очень полезно, чтобы не находить начало и конец группы. Попробуйте ci(, ci{, ci<, ci", ci', ct
в зависимости от того, какой тип объекта вы хотите изменить. И варианты ca(, ca{, ...
также удаляют скобки/кавычки.
Простота запоминания: изменение внутри оператора в скобках/изменение выражения в скобках.
ZZ
(работает как :wq
)
О позиции курсора. Я обнаружил, что курсор, который всегда находится посередине экрана, классный
set scrolloff=9999
Клавиша звездочки * будет искать слово под курсором.
[ + Tab приведет вас к определению функции C, которая находится под вашим курсором. (не всегда работает.)
Некоторые из моих последних дополнений к моему мозговому магазину VIm:
^wi
: перейдите к тегу под курсором, разделив его.cib/ciB
: измените текст внутри текущего набора скобок() или фигурных скобок {}, соответственно.:set listchars=tab:>-,trail:_ list
: Показать вкладки/трейлинг-пространства, визуально отличающиеся от других пробелов. Помогает с кодированием Python.: shell, чтобы запустить консоль от Vim. Полезно, например, если вы хотите протестировать script, не покидая Vim. Просто нажмите ^ d, когда закончите с консолью консоли, а затем вернитесь в Vim и отредактированный файл.
gv запускает визуальный режим и автоматически выбирает то, что вы ранее выбрали.
это всегда подбадривает меня.
:help 42
vimcryption
vim -x filename.txt
Вас попросят ввести фразу, отредактировать и сохранить. Теперь, когда вы снова открываете файл в vi, вам нужно будет ввести пароль для просмотра.
Не очень, правда. Вам нужно Makefile
в текущем каталоге.
Пока вы находитесь в vim, введите :make
, чтобы вызвать оболочку, создайте свою программу. Не беспокойтесь, когда прокручивает вывод; просто нажмите [Enter]
, когда закончите, чтобы вернуться в vim.
Внутри vim у вас есть следующие команды:
:cl
перечислены ошибки, предупреждения и другие сообщения.:cc
отображает текущее сообщение об ошибке/предупреждении в нижней части экрана и переходит в строку нарушения в вашем коде.:cc n
переходит к сообщению n
th.:cn
переходит к следующему сообщению.:cp
переходит к предыдущему сообщению.Есть больше; если вам интересно, введите :help :cc
из vim.
^ P и ^ N
Завершите предыдущий (^ P) или следующий (^ N) текст.
^ O и ^ I
Перейдите к предыдущему (^ O - "O" для старого) местоположения или к следующему (^ я - "I" рядом с "O" ). Когда вы выполняете поиск, редактируете файлы и т.д., Вы можете перемещаться по этим "прыжкам" вперед и назад.
знаки
Нажмите ma (m-mark, a - название метки). Позже, чтобы вернуться к типу позиции `a
Нажмите %
, когда курсор находится в кавычки, в палитре, в скобках или в скобках, чтобы найти совпадение.
До [character] (t
). Полезно для любой команды, которая принимает диапазон. Мой любимый ct;
или ct)
, который удаляет все до конечных точек с запятой/закрытием, а затем помещает вас в режим вставки.
Кроме того, полезны G
и gg
(идите вниз и вверх соответственно).
^r^w
, чтобы вставить слово под курсором в командном режиме.
Действительно полезно при использовании команд grep или replace
Хотелось бы, чтобы я знал основы визуального блока раньше. Даже если вы не используете VIM для чего-либо еще, это может сэкономить много времени, чтобы открыть файл в VIM только для некоторых операций блока. Я совершенно уверен, что потратил кучу времени на ручную работу.
Примеры, которые я нашел особенно полезными, когда, скажем, рефакторинг списков имен символических констант последовательно:
Войдите в режим визуальной блокировки (для меня Ctrl-Q в Windows вместо Ctrl-V)
Переместите курсор, чтобы выделить нужный блок.
Затем I whatever text
и нажимаю клавишу Esc, чтобы текст вставлялся перед блоком в каждой строке.
Используйте A
вместо I
чтобы текст вставлялся после блока в каждой строке.
Кроме того, простое переключение случая визуального выбора с помощью ~
может значительно сэкономить время.
И просто удаляя столбцы тоже с d
конечно.
Ввод номера строки, за которым следует gg
, приведет вас к этой строке.
^ y скопирует символ над курсором.
д < буква > - записывает макрос.
и
@< же буква > - воспроизводит его.
Это, безусловно, самые полезные команды в vim, так как вы можете заставить компьютер сделать для вас много работы, и вам даже не нужно писать программу или что-то еще.
qx начнет запись нажатий клавиш. Вы можете сделать практически любую задачу редактирования, и Vim ее помнит. Нажмите " q снова, когда вы закончите, и нажмите @x, чтобы воспроизвести ваши нажатия клавиш. Это отлично подходит для повторных изменений, которые слишком сложны для записи отображения. У вас может быть много записей с помощью символа, отличного от x.
Открытие нескольких файлов с помощью вкладок:
:tabe filepath
навигация между открытыми файлами
gt and gT or :tabn and :tabp
Сохраните открытый сеанс, чтобы позже вы могли вернуться к списку открытых файлов:
:mksession session_file_name.vim
Открыть созданный сеанс
vim -S session_file_name.vim
закройте все файлы одновременно
:qa
Еще одна команда, которую я узнал недавно:
autocmd
Он позволяет вам выполнить команду для события, чтобы вы могли, например, запустить команду make при сохранении файла, используя что-то вроде:
:autocmd BufWritePost *.cpp :make
Я бы сказал, что один из моих фаворитов помещает окно справки в новую вкладку:
:tab help <help_topic>
Это открывает помощь на новой вкладке и, как кто-то, кто любит вкладки vim, это смешно полезно.
:b [any portion of a buffer name]
для переключения буферов. Поэтому, если у вас есть два буфера "somefile1.txt" и "someotherfile2.txt", вы можете переключиться на второй с помощью просто ":b 2.t<enter>"
. Он также поддерживает заполнение вкладки, хотя это не требуется.
Говоря о завершении вкладки, настройка :set wildmode=full wildmenu
также очень полезна. Он позволяет завершить заполнение вкладки в командном режиме, а также очень полезное меню в стиле ncurses всех возможных совпадений при его использовании.
:% s,/поиск,/заменить,
Вы можете использовать другие символы, чем "/", чтобы отделить шаблоны для замещения. Таким образом, вам не нужно скрывать черты путей к файлам.
:x #(Save and Quit a File)
То же, что: wq или ZZ