Отображение <Shift> -Arrows для выбора символов/строк
Я начал использовать vim в последнее время, но я пропускаю методы выбора символов/строк из других текстовых редакторов. По умолчанию vim отображает <S-Up>
, <S-Down>
, чтобы переместиться на одну страницу вверх/вниз, и я хочу переназначить их на выбор текста.
Есть ли способ сделать это?
Ответы
Ответ 1
Вим не сгибает это легко, на мой взгляд. Терминал в моем случае даже не распознает Shift-Up! Я думал, что v
(выбор символов) или v
(линейный выбор) был среди более простых понятий, чтобы узнать о vi/vim.
Если это работает (невозможно проверить прямо сейчас), это то, что вам нужно:
" activate visual mode in normal mode
nmap <S-Up> V
nmap <S-Down> V
" these are mapped in visual mode
vmap <S-Up> k
vmap <S-Down> j
"
" etc...
" similarly <S-Left>, <S-Right> for v
Ответ 2
Немного отличается от ответа на запрос - это дает то же ощущение, что и у Mac-приложений:
nmap <S-Up> v<Up>
nmap <S-Down> v<Down>
nmap <S-Left> v<Left>
nmap <S-Right> v<Right>
vmap <S-Up> <Up>
vmap <S-Down> <Down>
vmap <S-Left> <Left>
vmap <S-Right> <Right>
Разница заключается в переключении на визуальный режим вместо визуального режима линии, а не на потере начального нажатия вверх/вниз и т.д.
Ответ 3
Я завершил сопоставление @escrapfford со вставками:
" shift+arrow selection
nmap <S-Up> v<Up>
nmap <S-Down> v<Down>
nmap <S-Left> v<Left>
nmap <S-Right> v<Right>
vmap <S-Up> <Up>
vmap <S-Down> <Down>
vmap <S-Left> <Left>
vmap <S-Right> <Right>
imap <S-Up> <Esc>v<Up>
imap <S-Down> <Esc>v<Down>
imap <S-Left> <Esc>v<Left>
imap <S-Right> <Esc>v<Right>
Также, сопоставляя обычную копию/вырезание/вставку, вы можете вернуться в режим вставки после выбора + копирования, например.
vmap <C-c> y<Esc>i
vmap <C-x> d<Esc>i
map <C-v> pi
imap <C-v> <Esc>pi
imap <C-z> <Esc>ui
Теперь вы можете начать выбор shift + стрелки из любого режима, затем C-c для копирования, а затем C-v для вставки. Вы всегда заканчиваете режим вставки, поэтому у вас также есть C-z для отмены.
Я думаю, что это больше подходит для поведения "ожидаемого стандарта" для текстового редактора, который задают yu.
Ответ 4
Я нашел другое решение, которое проще выполнить. Команда ': behave mswin' делает все, что необходимо для использования клавиш shift + cursor для выбора текста. Работает из любого режима. Он также поддерживает Cmd-c, Cmd-v и Cmd-x. Он работает в MacVim, но я не пробовал другие платформы.
Ответ 5
Настоятельно рекомендуется не переназначать эту функцию. Простое переключение в визуальный режим и использование v
, а клавиши со стрелками - лучшая идея. v
выберет всю строку, v$
выберет до конца строки, а vw
выберет следующее слово. Есть много других команд, которые вы можете использовать для выбора разных строк и слов. Изучение этих команд будет полезно не только для выбора, но и для более эффективного редактирования файлов.
Ответ 6
Здесь определенная опция: keymodel
:
'keymodel' 'km' string (default "")
global
{not in Vi}
List of comma separated words, which enable special things that keys
can do. These values can be used:
startsel Using a shifted special key starts selection (either
Select mode or Visual mode, depending on "key" being
present in 'selectmode').
stopsel Using a not-shifted special key stops selection.
Special keys in this context are the cursor keys, <End>, <Home>,
<PageUp> and <PageDown>.
The 'keymodel' option is set by the |:behave| command.
TL; DR. Чтобы включить нужное поведение, используйте:
set keymodel=startsel
Если вы также хотите оставить визуальный режим при использовании <Up>
или <Down>
без нажатия <Shift>
, вы можете использовать:
set keymodel=startsel,stopsel