Ответ 1
vmap <Tab> >gv
vmap <S-Tab> <gv
Во многих графических интерфейсах, когда я выбираю раздел текста и затем нажимаю кнопку Tab или Shift + Tab, выбранный раздел будет отступать или выходить.
В VIM я могу выбрать визуальный раздел, а затем нажать клавишу < или >, чтобы изменить отступ, однако, как только я нажму кнопку <, мой выбор будет очищен, поэтому я застрял, выбрав раздел снова и нажав < снова. Это становится очень раздражающим, когда я пытаюсь отступить что-то несколько остановок и хочу визуальной обратной связи.
Есть ли какие-либо входы и выходы в vim, сохраняя выбранный выделенный текст?
Есть ли трюк, чтобы повторно отобразить Tab и Shift + Tab, чтобы они действовали таким образом в визуальном режиме?
vmap <Tab> >gv
vmap <S-Tab> <gv
Вы можете префикс числа, т.е. "2 > ", чтобы отступать две вкладки. Или вы можете использовать " > " для отступов один раз, затем "." снова отступать (это работает, хотя блок больше не выделяется). Если вы заходите слишком далеко, "u" отменит один шаг за раз.
Еще одна полезная команда - "gv" для восстановления последнего визуального блока, если вам нужно применить другую команду.
Другой способ - выбрать блок и вставить отступ в начале строки, используя следующую последовательность:
ctrl+V
+ клавиши со стрелками для выбора блока.I
, чтобы переключиться в режим вставки так, чтобы вставленный текст был вставлен в начале выбора в каждой строке в выбранном блоке.ctrl+T
, чтобы увеличить отступ или ctrl+D
, чтобы уменьшить отступ. Вы можете добавить любое количество таких отступов. Примечание: Отступ будет отображаться только в первой строке блока, но когда режим вставки завершен, отступ будет реплицирован на всех строках блока.Попробуйте использовать "." для повторения команды. Он запоминает диапазон, и вы можете использовать "u", чтобы отменить один уровень, если зайти слишком далеко. Конфигурация не требуется.
Или вы можете перейти к ближайшей скобке и набрать =%
в нормальном режиме - отступы от блока, покрытого скобой и соответствующей ей. Но я не уверен, как это полезно на языке, таком как Python.
Следующая карта ключей работает как решение Брайана, Но также сохраняйте позицию курсора, связанную со словом.
" tap indent movement (use mark `m' for cursor position)
vmap <S-Tab> mm<`m:<C-U>exec "normal ".&shiftwidth."h"<CR>mmgv`m
vmap <Tab> mm>`m:<C-U>exec "normal ".&shiftwidth."l"<CR>mmgv`m
Попробуйте } для 'отступ следующего уровня абзаца 1.
Поскольку я отказался от vi до vim, я никогда не использовал > nor < еще раз. Я использую автоматическое отступы vim, которые могут быть явно вызваны с помощью =
Он отлично работает с движениями, такими как = a {, что даже более эффективно, чем =%
В противном случае, если one > недостаточно, просто переделайте его с помощью. или отмените изменение с помощью u.
С визуальным выбором блока
Шаги:
Выберите блок (Ctrl + v)
тип c (изменить)
тип необходимого пространства
тип esc