Как вырезать текст в режиме вставки (SELECT) в Vim без нежелательного поведения? - PullRequest
0 голосов
/ 15 февраля 2012

В настоящее время я использую это сопоставление клавиш в моем файле .vimrc для имитации сочетания клавиш Windows Cut.Вырезать, то есть скопировать и удалить выделенный текст.

vnoremap <C-X> "+x

Это сопоставление клавиш является частью скрипта mswin.vim, который поставляется с Vim, который я не использую, я толькоиспользуйте несколько сопоставлений клавиш из этого файла.

Когда я затем выбираю текст из Vim в режиме вставки и нажимаю Ctrl X , текст копируется и удаляется, но снежелательный побочный эффект от перемещения курсора назад на несколько символов и выполнения обычного поведения Vim при нажатии Ctrl X , который уменьшает число непосредственно под курсором!

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

Renderer.setClearColorHex(0x7DB6D5, 1.0);
Renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

и заканчиваю этим:

Renderer.setClearColorHex(0x7DB6D5, 1.-1);  // <--- oh dear!
.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

Что приводит к нескольким ошибкам!

Есть ли способ избежать этого нежелательного поведения с помощью этой раскладки клавиатуры или есть другой, более безопасный способ вырезать текст в режиме вставки (SELECT)?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Был конфликт с плагином Snipmate в файле snipmate\after\plugin\snipMate.vim.

Я закомментировал эти строки, и все в порядке.

" snor <bs> b<bs>
" snor <right> <esc>a
" snor <left> <esc>bi
" snor ' b<bs>'
" snor ` b<bs>`
" snor % b<bs>%
" snor U b<bs>U
" snor ^ b<bs>^
" snor \ b<bs>\
" snor <c-x> b<bs><c-x>
0 голосов
/ 15 февраля 2012

Вы на самом деле используете mswin.vim или нет?AFAIK, там многое сделано для того, чтобы разрешить редактирование в режиме INSERT и все такое чудовище;если вы берете только один маленький фрагмент, нет гарантии, что он будет работать правильно.

Если вы используете совместимость MSWIN и , это отображение уже в mswin.vim, почему вы положили его в свойvimrc?

Если вы не используете совместимость с MSWIN, здесь есть много неправильных вещей:

  • «редактирование» текста не выполняется в INSERT В режиме необходимо вернуться в режим НОРМАЛЬНЫЙ и выполнить там редактирование
  • в режиме НОРМАЛЬНЫЙ , d является правильным эквивалентомиз Ctrl + X , поскольку он удаляет то, что вы хотите удалить, и помещает его в регистр по умолчанию, готовый для вставки в другое место.
  • вы не делаетенеобходимо выбрать слово, чтобы удалить его, предположим, что вы на R из Renderer, вы должны сделать dw, чтобы удалить до конца текущего слова
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...