Поиск…


Синтаксис

  • : установить relativenumber
  • : установить номер
  • : set nonumber /: set nonu
  • : PWD

замечания

Эта автоматическая перезагрузка произойдет, только если вы отредактируете vimrc в полной версии версии vim, которая поддерживает autocmd .

Быстрые макросы «отбрасывания»

Добавьте это в свой vimrc:

nnoremap Q @q

Чтобы начать запись макроса «throwaway», используйте qq . Для завершения записи нажмите q (в обычном режиме для обоих).

Чтобы выполнить записанный макрос, используйте Q

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

Использование функции завершения пути внутри Vim

Это очень часто, вы запоминаете путь к файлу или папке, вы открываете Vim и пытаетесь написать то, что вы только что запомнили, но вы не на 100% уверены, что это правильно, поэтому вы закрываете редактор и начинаете все заново.

Если вам нужна функция завершения пути, и у вас есть файл /home/ubuntu/my_folder/my_file и вы редактируете другой файл, ссылающийся на путь предыдущего:

Войдите в режим вставки: вставьте или сделайте так, как хотите. Затем напишите /h . Когда курсор находится под h , нажмите Ctrl x, а затем Ctrl f, чтобы редактор завершил его /home/ потому что шаблон /h уникален

Теперь предположим, что у вас есть две папки внутри /home/ubuntu/ called my_folder_1 my_folder_2

и вам нужен путь /home/ubuntu/my_folder_2

по-прежнему:

Войдите в режим вставки

write /h и нажмите Ctrl x, а затем Ctrl f . Теперь у вас есть /home/ Next add u after / home / и нажмите Ctrl x, а затем Ctrl f . Теперь у вас /home/ubuntu/ потому что этот путь уникален. Теперь напишите my пост /home/ubuntu/ и нажмите Ctrl x, а затем Ctrl f . Редактор завершит ваше слово до my_folder_ и вы увидите дерево каталогов, поэтому используйте клавиши со стрелками, чтобы выбрать тот, который вы хотите.

Включить относительные номера строк

Чтобы удалить некоторые строки текста, когда вы не знаете точное количество строк для удаления, вы пытаетесь 10dd , 5dd , 3dd пока не удалите все строки.

Относительные номера строк решают эту проблему, предположим, что у нас есть файл, содержащий:

sometimes, you see a block of 
text. You want to remove 
it but you 
cannot directly get the 
exact number of 
lines to delete 
so you try 
10d , 5d 
3d until 
you
remove all the block.

Войдите в режим NORMAL: Esc

Теперь выполните :set relativenumber . После этого файл будет отображаться как:

3 sometimes, you see a block of
2 text. You want to remove
1 it but you
0 cannot directly get the
1 exact number of
2 lines to delete
3 so you try
4 10d , 5d
5 3d until
6 you
7 remove all the block.

где 0 - номер строки для текущей строки, а также показывает номер реальной линии перед относительным числом, поэтому теперь вам не нужно оценивать количество строк из текущей строки для вырезания или удаления или хуже считать их одним одним.

Теперь вы можете выполнить свою обычную команду, например, 6dd и вы уверены в количестве строк.

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

Если вы также :set number или имеете :set number уже :set number , вы получите номер строки строки, в которой находится курсор.

3 sometimes, you see a block of 
2 text. You want to remove 
1 it but you 
4 cannot directly get the 
1 exact number of 
2 lines to delete 
3 so you try 
4 10d , 5d 
5 3d until 
6 you 
7 remove all the block. 

Просмотр номеров строк

Для просмотра номеров строк из представления по умолчанию введите

:set number

Чтобы скрыть номера строк

:set nonumber

Существует также ярлык для выше. nu - это number .

:set nonu

Чтобы скрыть номера строк, мы также можем использовать

:set nu!

Отображения для выхода из режима Insert

Многие пользователи Vim находят, что Esc слишком сложно достичь, и в конечном итоге найти другое отображение, которое легко достать из домашней строки. Обратите внимание, что Ctrl - [ может быть эквивалентно Esc на английской клавиатуре и намного проще в доступе.

j k

inoremap jk <ESC> 

Это очень легко вызвать; просто разбивайте первые два пальца на домашнем ряду одновременно. Это также трудно вызвать случайно, так как «jk» никогда не появляется ни в одном английском словаре, и если вы в обычном режиме, он ничего не делает. Если вы не inoremap kj <ESC> «blackjack» слишком много, подумайте также о добавлении inoremap kj <ESC> поэтому вам не нужно беспокоиться о сроках двух ключей.

Caps Lock

Linux

В Linux вы можете использовать xmodmap чтобы сделать Caps Lock делать то же самое, что и Esc . Поместите это в файл:

!! No clear Lock 
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape

Затем запустите xmodmap file . Это переводит Caps Lock в Esc .

Windows

В Windows вы можете использовать SharpKey или AutoHotkey .

Macos

Если у вас есть macOS 10.12.1 или новее, вы можете переназначить Caps Lock на Escape с помощью системных настроек. Выберите «Клавиатура», перейдите на вкладку «Клавиатура» и нажмите «Ключи модификатора».

Настройки клавиатуры

Как узнать каталог и / или путь к файлу, который вы редактируете

Чтобы узнать путь к каталогу, в котором находится ваш файл, вы можете использовать:

Esc для входа в командный режим

:pwd

Это напечатает путь к каталогу в нижней части редактора, как это

I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder                                                1,5         All

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

Esc для входа в командный режим CTRL G

I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%--                         1,5         All

Наконец, чтобы получить абсолютный путь к редактируемому файлу, используйте

Esc, чтобы войти в командный режим,

1, а затем CTRL G

I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%--              1,5         All

Поиск в функциональном блоке

Для поиска текста foo внутри блока {} окружающего курсор, используйте следующую команду ( <ESC> - escape-ключ, <CR> - ввести ключ):

vi{<ESC>/\%Vfoo<CR>

теперь вы можете прыгать между совпадениями внутри блока, нажимая n и p . Если вы включили опцию hlsearch вы увидите все совпадения. \%V - это специальная часть шаблона поиска, которая указывает vim искать только в визуально выбранной области. Вы также можете сделать сопоставление следующим образом:

:vnoremap g/ <ESC>/\%V

После этого вышеуказанная команда сокращается до следующего:

vi{g/foo<CR>

Другой полезный трюк - напечатать все строки, содержащие шаблон:

vi{
:'<,'>g/foo/#

Диапазон '<,'> устанавливается автоматически.

См. Раздел :help range и :help :g .

Скопировать, переместить или удалить найденную строку

Многие пользователи оказываются в ситуации, когда они просто хотят быстро скопировать, переместить или удалить строку и вернуться туда, где они были.

Обычно, если вы хотите переместить строку, содержащую слово « lot ниже текущей строки, вы должны ввести что-то вроде:

/lot<Esc>dd<C-o>p

Но для повышения производительности вы можете использовать этот ярлык в следующих случаях:

" It's recommended to turn on incremental search when doing so
set incsearch

" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``

Итак, поиск выглядит следующим образом:

/lot$m

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

Напишите файл, если вы забудете `sudo` перед запуском vim

Эта команда сохранит открытый файл с правами sudo

:w !sudo tee % >/dev/null

Вы также можете отобразить w!! выписать файл как root

:cnoremap w!! w !sudo tee % >/dev/null

Автоматическая перезагрузка vimrc при сохранении

Чтобы автоматически перезагрузить vimrc при сохранении, добавьте следующее в свой vimrc :

if has('autocmd') " ignore this section if your vim does not support autocommands
    augroup reload_vimrc
        autocmd!
        autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
    augroup END
endif

а затем в последний раз введите:

:so $MYVIMRC

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

nested полезно, если вы используете vim-авиакомпанию. Процесс загрузки авиакомпании запускает некоторые автокоманды, но поскольку вы находитесь в процессе выполнения автокоманды, они пропускаются. nested позволяет запускать вложенные автокоманды и позволяет авиакомпании правильно загружаться.

Завершение командной строки

set wildmenu включить предложения по завершению для командной строки.
Выполните следующее

set wildmenu
set wildmode=list:longest,full

Теперь, если вы скажете :color вкладка :color ,

Ты получишь

256-jungle  Benokai  BlackSea  C64  CandyPaper  Chasing_Logic  ChocolateLiquor  
:color 0x7A69_dark


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow