Vim - Как скопировать Ctrl-W & lt; arrow & gt; до Alt & lt; arrow & gt; [Дубликат]

Использование функции reshape:

reshape(dat1, idvar = "name", timevar = "numbers", direction = "wide")
71
задан Thomson 21 September 2011 в 15:00
поделиться

7 ответов

Для пользователей Mac: для отображения ALT + hjkl вместо этого используйте реальный символ (узнайте, какой символ использует комбинацию в режиме INSERT), например, с моей клавиатурой я получаю:

<ALT+j> ==> ª
<ALT+k> ==> º

и т. д. Решение найдено здесь в StackOverflow.

Я использовал это для перемещения строк вверх и вниз с помощью ALT + k \ j, используя это на моем .vimrc:

nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==

inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi

vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv

, как описано здесь здесь .

Надеюсь, что это полезно, наслаждайтесь Vim:)

109
ответ дан Community 22 August 2018 в 21:02
поделиться
  • 1
    Это именно то, для чего я пришел сюда (Alt + HJKL, чтобы двигаться). Благодаря! – Jamie Schembri 14 June 2013 в 14:17
  • 2
    Легкий способ узнать, какой символ он есть, - это использовать cat. Просто введите cat и внутри окна кота комбинацию клавиш, которую вы хотите. Выяснилось, что alt + скобки - это «и» на моем mac. – dvcrn 22 July 2014 в 22:25
  • 3
    это отлично работает, как Alt + HJKL, чтобы двигаться между расколами, мои пальцы любят его !! nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down> – John Morales 10 December 2014 в 02:54
  • 4
    Как ни странно, это действительно правильно. Спасибо, пучки! – Fomentia 30 June 2015 в 14:29
  • 5
    Эти точные сопоставления могут работать не так, как ожидалось, в будущих версиях OSX. Используйте sed -n l, чтобы видеть выход & lt; A-k & gt; и & lt; A-j & gt; перед настройкой сопоставления. В моем случае & lt; A-j & gt; и & lt; A-k & gt; ˚ – luk3thomas 13 January 2016 в 15:31

Использование:

map <A-D> <C-D>

См. :help key-notation.

9
ответ дан Benoit 22 August 2018 в 21:02
поделиться
  • 1
    Кажется, это все еще не работает. Alt + d будет вводить странный символ в Vim, что и в случае с unmap. – Thomson 21 September 2011 в 15:12
  • 2
    Работает для меня (я использую gvim для Windows) – Deqing 2 September 2013 в 08:29

:help key-notation описывает, какой формат необходимо использовать для сопоставления разных ключей. В случае alt вы можете использовать либо <A-, либо <M-. Таким образом, ваше сопоставление будет

map <M-d> <C-d>

. Я также рекомендую использовать вариант nore :map (например, noremap), если вы явно не хотите, чтобы правая сторона была переопределена для сопоставлений.

36
ответ дан jamessan 22 August 2018 в 21:02
поделиться
  • 1
    Это все равно не имеет никакого эффекта. Вход Alt + D по-прежнему вводит какой-то странный характер для Vim. – Thomson 21 September 2011 в 15:16
  • 2
    Это отдельная проблема. Ваш терминал отправляет многобайтовый символ в Vim, и Vim не знает, чтобы интерпретировать его как <A-d>. Вероятно, вам необходимо изменить настройки вашего терминала, чтобы он отправил <A-d> в качестве <Esc>d. – jamessan 21 September 2011 в 15:19
  • 3
    +1 для подсказки о вариантах nore. – Benoit 21 September 2011 в 15:26

Мой терминал создаст команды ^[x (например, для alt-x). Что получилось, чтобы работать внутри Vim был этот маленький скрипт из vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Добавить в .vimrc, чтобы исправить все сопоставления клавиш alt.

6
ответ дан laktak 22 August 2018 в 21:02
поделиться

Карта Alt Key в Vim на Mac OSx:

Начните с просмотра кода ключа, который ваш терминал отправляет в vim:

$ sed -n l
^[[1;9D 

В приведенном выше примере я запустил и нажмите Alt + Left.

^[[1;9D - это экранированная последовательность, отправляемая в vim, поэтому мы можем использовать ее для нашего сопоставления.

map <Esc>[1;9D 
13
ответ дан lfender6445 22 August 2018 в 21:02
поделиться
  • 1
    Если вы используете приложение iTerm2, хорошо проверить, как клавиши отображаются в профиле & gt; Ключи. – fikovnik 13 February 2017 в 02:12

Ваш терминал может не передавать «правильно» Alt-D. Вы можете использовать C-V, чтобы фактически получить фактическую последовательность escape-отправки в Vim и использовать ее для создания вашего сопоставления. Т.е. отредактируйте свой .vimrc и замените фактическое, введя следующую последовательность «C-V Alt-D», чтобы в вашем vimrc была правильная escape-последовательность. Это не сработает, если ваш терминал ничего не отправит vim.

8
ответ дан mb14 22 August 2018 в 21:02
поделиться

Я не уверен, что это возможно. Пожалуйста, прочитайте обновление ниже.

Да, вы можете даже в терминале vim, но нет реального catch all ответа. В основном вы должны выполнить два шага:

  1. Убедитесь, что существует нотация <M-d>, и точно укажите, какие входы вашего терминала (^[ является символом escape):
    $ cat
    ^[d
    $
    
    " in your .vimrc
    execute "set <M-d>=\ed"
    " you have to use double quotes!
    
  2. Скопируйте что-то в свою новую «созданную» комбинацию:
    noremap <M-d> :echo "m-d works!"<cr>
    

Понимая, как это работает, вы можете расширить этот «трюк» на другие «странные» комбинации, например, Я использую термит, и vim не распознает <S-F1>, используя cat, я получаю ^[[1;2P. Затем, в моем vimrc я делаю: execute "set <S-F1>=\e[1;2P", а затем я могу отобразить его на что угодно.

Примечание: я не знаю почему, но для некоторых людей, использующих \<Esc>, работает вместо \e.


Обновление (февраль 2016)

В зависимости от terminfo ваш терминал запускается, может быть, вы могли бы ... в большинстве терминалов, например, «alt + h» отображается на ^[h, а именно: «escape + h». Поэтому он может перезаписывать ключи. Я просто попробовал (снова), и, похоже, это работает, но я считаю, что это очень сложная и ошибочная реализация.

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

22
ответ дан Pablo Olmos de Aguilera C. 22 August 2018 в 21:02
поделиться
  • 1
    это работает для сопоставлений в режиме вставки? – Andrew MacFie 7 August 2015 в 14:43
  • 2
    Вместо материала execute "set... вы можете просто использовать set <M-d>=^[d. ^[ на самом деле является escape-символом, введенным с помощью C-v-Esc. Это было необходимо в rxvt / urxvt, но xterm не нуждался бы в особом лечении. Дополнительная информация по этой теме в vim wiki . – Micah Elliott 20 August 2015 в 18:48
  • 3
    Существует ли аналогичный подход к этому, который будет работать с tmux, чтобы можно было привязать M-d? – George 11 February 2016 в 17:08
  • 4
    Для меня <Esc>, тогда d теперь делает то же, что и <Alt> + d. Кроме того, вы можете просто сделать это в одной строке с Ctrl-v, <Esc> в соответствии с здесь . – Sparhawk 18 January 2017 в 05:58
  • 5
    vim-fixkey отлично работает и выглядит довольно уверенно. – Tom Hale 20 October 2017 в 08:07
Другие вопросы по тегам:

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