Простые команды Vim, которые вы хотели бы знать раньше [закрыто]

Вы имеете в виду разрешение дисплея (например, 72 точки на дюйм) или размеры пикселей (в настоящее время окно браузера составляет 1000 x 800 пикселей)?

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

Невозможно узнать разрешение дисплея только с Javascript, так как сам компьютер обычно не знает фактические размеры экрана, просто количество пикселей. 72 dpi - обычное предположение ....

Обратите внимание, что есть много путаницы в разрешении экрана, часто люди используют этот термин вместо разрешения пикселей, но эти два совершенно разные. См. Википедия

Конечно, вы также можете измерять разрешение в точках на см. Существует также неясная тема не квадратных точек. Но я отвлекся.

373
задан 4 revs, 3 users 57% 15 April 2019 в 14:22
поделиться

45 ответов

Мне бы очень хотелось знать, что вы можете использовать Ctrl C вместо Esc для выхода из режима вставки. Для меня это было настоящим повышением производительности.

310
ответ дан 2 revs, 2 users 67% 15 April 2019 в 14:22
поделиться

Открытие нескольких файлов с помощью вкладок:

: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
12
ответ дан 4 revs, 3 users 90% 15 April 2019 в 14:22
поделиться

Я бы сказал, что одно из моих любимых - это поместить окно справки в новую вкладку:

:tab help <help_topic>

Это открывает справку в новой вкладке и, как кто-то, кто любит вкладки vim, это смехотворно полезен.

11
ответ дан Robert Massaioli 15 April 2019 в 14:22
поделиться

:b [any portion of a buffer name] для переключения буферов. Так что если у вас есть два буфера: «somefile1.txt» и «someotherfile2.txt», вы можете переключиться на второй с помощью простого ":b 2.t<enter>". Он также поддерживает завершение табуляции, хотя и не обязательно.

Говоря о завершении вкладки, настройка :set wildmode=full wildmenu также очень полезна. Он обеспечивает полное заполнение табуляции для командного режима, а также очень полезное меню в стиле ncurses для всех возможных совпадений при его использовании.

9
ответ дан Michael 15 April 2019 в 14:22
поделиться

:% s, / search, / replace,

Вы можете использовать другие символы, кроме » / «, чтобы отделить шаблоны для замены. Таким образом, вам не нужно избегать косых черт путей к файлам.

8
ответ дан hfs 15 April 2019 в 14:22
поделиться
:x #(Save and Quit a File)

То же, что: wq или ZZ

7
ответ дан jmohr 15 April 2019 в 14:22
поделиться

cw

Изменить слово - удаляет слово под курсором и переводит вас в режим вставки для ввода нового слова. Конечно, это работает с другими клавишами перемещения, поэтому вы можете сделать что-то вроде c $ , чтобы перейти к концу строки.

f + символ

Находит следующее вхождение символа в текущей строке. Таким образом, вы можете сделать vft , чтобы выделить весь текст до следующей буквы «t» в текущей строке. Это еще одна клавиша перемещения, поэтому она работает и с другими командами.

7
ответ дан 2 revs 15 April 2019 в 14:22
поделиться

Интерфейс с вкладками
Помимо разделенной Windows, вы также можете иметь вкладки Windows. В режиме выхода введите: tabnew. Вы можете открыть несколько вкладок, как это. Для перехода между вкладками введите tabn. Это переместится на следующую вкладку. Чтобы перейти к окну с вкладками, введите: tabn2, чтобы переместить вторую вкладку и т. Д.

Чтобы закрыть вкладку, введите: tabc или: tabclose или просто: закрыть.

Если вы находитесь в эмуляторе терминала (в основном это терминал в GUI), вы можете попробовать выполнить: set mouse = a. Как только это будет сделано, вы можете щелкнуть мышью внутри редактора. И это также поможет вам перемещаться между вкладками, щелкая, а также закрывая, нажимая кнопку закрытия с правой стороны.

Выровняйте свой код - Полный файл
Просто введите G = gg в режиме выхода.

Сложите код
Скажем, у вас есть функция, которая завершена. Вы хотите минимизировать (или свернуть) эту часть кода, чтобы освободить место и уменьшить беспорядок. Просто выберите код. Затем введите: fold.

Это свернет код. Если вы хотите расширить код, просто зайдите туда и введите zo. Чтобы снова сложить, введите zc.

7
ответ дан 2 revs, 2 users 84% 15 April 2019 в 14:22
поделиться

Я удивлен, что никто не упомянул о поддержке окон в Vim. CTRL-W s я использую почти каждый раз, когда открываю vim.

6
ответ дан Kris Jenkins 15 April 2019 в 14:22
поделиться

Я часто создаю функции для редактирования задач и сохраняю их в своем .vimrc, чтобы найти их снова. Например, чтение стека вызовов .Net, которые были преобразованы в одну строку:

function! FixCallStacks()
:%s;\[NLN\];\r;g
:%s;\[TAB\];\t;g
endfunction
5
ответ дан Igor Dvorkin 15 April 2019 в 14:22
поделиться

Продолжая предложение xcramps, я не могу сказать вам, сколько раз я использовал:

:%!sort

для сортировки списка. элементов в файле.

Подробности:

: Диапазон ! Команда

будет выполнить команду оболочки в указанном диапазоне строк. Диапазон обычно задается как начало , конец

Примеры:
1,3 указывает первые 3 строки
'a,'b выбирает текст между закладками a и b
.,$ выбирает весь документ (. = первая строка; $ = последняя строка)
% является ярлыком для .,$ и также выделяет весь документ.

Не стесняйтесь смешивать и сочетать номера, закладки, . и $.

5
ответ дан 2 revs 15 April 2019 в 14:22
поделиться

: стена и: стена, чтобы закрыть все разделенные экраны

5
ответ дан Vijay Dev 15 April 2019 в 14:22
поделиться
:Te[xplore]

Tab & amp; Исследуйте (делает вкладку перед генерацией окна браузера)

3
ответ дан user176776 15 April 2019 в 14:22
поделиться

Используйте vim-bindings в командной строке в bash:

    set -o vi

В других программах, использующих readline, нажмите control-alt-j, чтобы переключиться с emacs на привязки vim.

3
ответ дан Michael Fox 15 April 2019 в 14:22
поделиться
ma
move cursor down
:'a,.!program

Это займет весь текст между тем, где вы установите метку (ma) для текущей строки (.), Запустите ее через программу и замените содержимое отмеченной области результатами. Вы даже можете использовать его, чтобы просмотреть содержимое каталога (например), сделав пустую строку, а затем с курсором, сидящим на этой строке,

:.!ls

О, и вы можете установить такие метки для az (то есть ма), и

'a

переместит вас на позицию, которую вы пометили как «а».

/ ищет вперед, и? повторяет поиск в обратном направлении без необходимости пополнять схему поиска.

Отличный материал. vi сильно недооценен. Как только вы это освоите, вы больше не захотите использовать редакторы, поставляемые с IDE.

4
ответ дан xcramps 15 April 2019 в 14:22
поделиться

Я знаю, что это не совсем vim. Но я нахожу интеграцию cscope действительно хорошей, и она мне очень помогает при взломе ядра linux.

Ctrl- \ g, чтобы найти определение функции Ctrl- \ s, чтобы найти все применения функции / макроса / переменной.

1
ответ дан LB40 15 April 2019 в 14:22
поделиться

д & л; буква > - записывает макрос.

и

@ < same-letter > - воспроизводит его.

Это, безусловно, самые полезные команды в vim, так как вы можете заставить компьютер выполнять за вас большую работу, и вам даже не нужно писать программу или что-то еще.

14
ответ дан leeand00 15 April 2019 в 14:22
поделиться

^ y скопирует символ над курсором.

15
ответ дан innaM 15 April 2019 в 14:22
поделиться

Самый последний трюк «вау», который я узнал, - это метод сложного поиска и замены. Довольно часто в прошлом у меня было действительно сложное регулярное выражение для замены, и оно не работало. Есть лучший способ:

: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
194
ответ дан DrAl 15 April 2019 в 14:22
поделиться

Я создал эту ссылку моей наиболее часто используемой команды для моего друга. Надеюсь, что люди найдут что-то полезное:

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: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you 
     may have open for auto-complete suggestions.
152
ответ дан 7 revs, 6 users 67% 15 April 2019 в 14:22
поделиться

gi переключается в режим вставки, перемещая курсор в то же положение, в котором он находился ранее.

138
ответ дан Cyber Oliveira 15 April 2019 в 14:22
поделиться
:q!

Хотелось бы знать, что до того, как я впервые запустил vi

104
ответ дан Michał Piaskowski 15 April 2019 в 14:22
поделиться

Установка подтверждения позволяет изящно выйти из vim с помощью : q . Вам не нужно использовать ZZ или другие мощные механизмы, которые слепо сохраняют или отбрасывают все изменения.

0
ответ дан too much php 15 April 2019 в 14:22
поделиться

Я только что обнаружил это во время просмотра справки vim:

:help index

Это приведет вас к одной ( с возможностью поиска! ) странице со всеми командами для всех режимов.

Таким образом, если вы знаете, что команда, которую вы пытаетесь запомнить / запоминать, начинается с или включает определенное нажатие клавиши, вы можете найти ее и просмотреть все возможности. Или вы можете просто просмотреть интересующий вас режим, чтобы увидеть / изучить возможности редактирования.

Я не могу сосчитать, сколько раз я сделал :help CTRL-R или что-то еще и получил только первое, что, конечно, никогда не будет тем, что вы хотите. Это намного лучше, чем: helpgrep IMO.

Редактировать

И в .vimrc он идет:

nnoremap <silent> <F1> :help normal-index<CR>
inoremap <silent> <F1> <C-O>:help insert-index<CR>

:help по-прежнему возвращает вас на страницу F1 по умолчанию.

4
ответ дан 2 revs 15 April 2019 в 14:22
поделиться

Вы можете использовать целый набор команд для изменения текста в скобках / скобках / кавычках / тегах. Очень полезно избегать необходимости искать начало и конец группы. Попробуйте ci(, ci{, ci<, ci", ci', ct в зависимости от того, какой объект вы хотите изменить. И варианты ca(, ca{, ... удаляют также квадратные / кавычки.

Легко запомнить: изменить внутри выражения в скобках / изменить выражение в скобках.

46
ответ дан 2 revs, 2 users 80% 15 April 2019 в 14:22
поделиться

qx начнет запись нажатий клавиш. Вы можете выполнить практически любую задачу редактирования, и Vim запоминает ее. Нажмите q еще раз, когда закончите, и нажмите @x , чтобы повторить нажатия клавиш. Это отлично подходит для повторяющихся редактирований, которые слишком сложны, чтобы написать сопоставление. Вы можете иметь много записей, используя символ, отличный от x .

12
ответ дан too much php 15 April 2019 в 14:22
поделиться

Звездочка * будет искать слово под курсором.

[ + Tab приведет вас к определению функции C, которая находится под вашим курсором. (хотя не всегда работает.)

42
ответ дан 2 revs, 2 users 57% 15 April 2019 в 14:22
поделиться

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

new var1,var2,var3,etc

Это реальная боль, чтобы пройти и визуально попытаться отсортировать каждую переменную. Подсветка блока и команда сортировки в Vim - мои друзья здесь:

  1. Переместите курсор на первую переменную, которую нужно отсортировать.
  2. Введите команду v, чтобы войти в визуальный режим.
  3. Переместите курсор в конец последней переменной, которая будет отсортирована, в моем случае я ввожу $, чтобы перейти к концу строки).
  4. Выполните команду! Sort, чтобы Vim отсортировал выделенный текст.

Это будет работать, только если в базовой системе существует команда 'sort'.

2
ответ дан igotmumps 15 April 2019 в 14:22
поделиться

Для навязчивой конфигурации vim посмотрите на https://github.com/jmcantrell/dotfiles-vim

.
-2
ответ дан 2 revs, 2 users 67% 15 April 2019 в 14:22
поделиться

Некоторые из моих последних дополнений к моему мозговому хранилищу VIm:

  • ^wi: Перейти к тегу под курсором, разбив окно.
  • cib/ciB: изменить текст внутри текущего набора скобок () или фигурных скобок {} соответственно.
  • :set listchars=tab:>-,trail:_ list: Показать вкладки / пробелы, визуально отличающиеся от других пробелов. Очень помогает с кодированием Python.
40
ответ дан 2 revs, 2 users 73% 15 April 2019 в 14:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: