Коллекции загружаются
К моему же собственному удивлению, пристрастился к виму. Оказывается, это офигенно удобно, когда не нужно убирать пальцы с букв (на del, backspace, клавиши курсора, etc). Удобно-удобно-удобно… А потом бац — натыкаешься на какую-нибудь фигню, в которой вим до жути дубовый и неудобный. Например, на то, как он делает вставку. И всё, хочется залепить кулаком в экран. И уж точно времени тратится куда больше, чем если бы я это же делал в каком-нибудь другом редакторе.
#IT #Лытдыбр 25 января 2020
4 |
Wave
Да нет же. Он у меня почему-то всё равно, как я ни извращаюсь, в режиме вставки любой комбинацией бэкспейса или чистым бэкспейсом удаляет символ слева, если не на начале строки, а в нормальном режиме делит экран пополам (и ещё раз пополам, и ещё). А вот это странно... Покажи что выведет в файлик:redir! > vim_keys.txt :silent verbose map :silent verbose map! :redir END |
Wave
Так а как замапить Home и End и главное, как в режиме редактирования прыгать на начало-конец строки? А то не прикалывает делать <Esc>A или <Esc>I особенно учитывая, что я так и не определился с тем, чем же заменить себе эскейп. Можешь пока использовать C-a и C-e — это ридлайновские Home/End (правда Home кидает в начало строки, а не текста на строке). Я попозже доберусь до компа с полноразмерной клавиатурой и посмотрю, что там у меня с Home/End.но кто ж знал (и этот нект тоже), что <C-h> это у нас <BS> Смотри, вот тут есть стандартные шорткаты readline, можешь подсматривать, чтобы случайно не переопределить :)И с копированием-вставкой я запутался конкретно. Я тоже :) В чём там проблема была? |
Если ты используешь ConEmu, то ты можешь в нём самом определить комбинацию Ctrl-BS, чтобы он посылал Ctrl+w :) Я сейчас попробовал в своём терминале, работает :)
Упд: кстати, у него уже такое есть в настройках. |
Если ты используешь ConEmu, то ты можешь в нём самом определить комбинацию Ctrl-BS, чтобы он посылал Ctrl+w :) Я сейчас попробовал в своём терминале, работает :) Не-не! В этом же самом конэму у меня работает и фар.Upd. Глянул, что там имеется в виду. Ни одно состояние 3-state переключателя не меняет поведения вот этого вот ни при наличии, ни при отсутствии noremap! <C-BS> <C-w> Если что, интерес разобраться тут у меня чисто спортивный, чтобы знать, что это нафиг такое. Так- то мне достаточно того, что есть шоткат для того, что мне нужно. Который к тому же работает и в русской раскладке. Можешь пока использовать C-a и C-e Эххъъ. Хрен редьки не слаще. На C-a у меняnmap <C-a> <Esc>ggVG imap <C-a> <Esc>ggVG А C-e прокручивает текст на строку вниз, оставляя курсор в предыдущей строке. Это, насколько помню, стандартный вимовский шоткат. Я тоже :) В чём там проблема была? Во всём разом: а) у вима есть свой буфер обмена, б) два режима вставки: с отступами и без, в) поверх этого вмешивается конэму и тоже в двух режимах (всё портить и бибикать ©). В фаре не вмешивается, а тут вмешивается.Ночью я было обрадовался, найденный плагин работает полностью так, как мне надо: if exists("g:loaded_bracketed_paste") Пофиг, что я это почти не понимаю. Пофиг что шоткат Ctrl+Shift+V — привыкну. А вот сейчас сижу экспериментирую, и опять вылазят траблы. Во-первых, в русской раскладке не работает. Во-вторых, опять хрен знает где вставляет: может со следующей строчки, а может в позицию после курсора (p — на символ дальше).finish endif let g:loaded_bracketed_paste = 1 let &t_ti .= "\<Esc>[?2004h" let &t_te = "\e[?2004l" . &t_te function! XTermPasteBegin(ret) set pastetoggle=<f29> set paste return a:ret endfunction execute "set <f28>=\<Esc>[200~" execute "set <f29>=\<Esc>[201~" map <expr> <f28> XTermPasteBegin("i") imap <expr> <f28> XTermPasteBegin("") vmap <expr> <f28> XTermPasteBegin("c") cmap <f28> <nop> cmap <f29> <nop> Вот это меня бесит неимоверно. Я вижу, где стоит курсор. Я говорю редактору что-то сделать, например, вставить текст из буфера обмена. А он берёт и делает это на символ дальше от курсора. И да, ты уже объяснял, но всё равно это нахрен неудобно. Возможно, пока что, пока не искривлю свои пальцы под вим. |
Wave
Вот это меня бесит неимоверно. Я вижу, где стоит курсор. Я говорю редактору что-то сделать, например, вставить текст из буфера обмена. А он берёт и делает это на символ дальше от курсора. И да, ты уже объяснял, но всё равно это нахрен неудобно. Возможно, пока что, пока не искривлю свои пальцы под вим. Стоп, про это я ничего не объяснял. Только про выход из insert-режима.Если хочешь вставлять текст в позицию курсора, то вместо p используй gP. Можешь забиндить: nnoremap p gP Только аккуратно, если пользуешься всякими xp, ddp — они поломаются с новым биндингом. |
Wave, inoremap! — такой команды нет. Есть inoremap и noremap! :)
Сделай такую штуку: нажми Ctrl+v, затем backspace, и посмотри, что получится. На «это» и забиндь C-h. |
Вообще, это глюки не конкретно vim/neovim, а конкретных реализаций readline, под которыми они работают.
|
Всё равно не получается. Вставляется <BS> и <C-BS> соответственно, а при попытке намапить в редакторе вставляется Îx и ^_
|
Ладно, нахрен, я спать. Точно уж, софт для красноглазиков.
|
Wave
бекспейс упирается в то, что было до нажатия A и останавливается намертво Я уже про это говорил::set backspace=indent,eol,start |
Wave
Всё равно не получается. Вставляется <BS> и <C-BS> соответственно, а при попытке намапить в редакторе вставляется Îx и ^_ Вот это и попробуй намаппить (через noremap!) на C-h и C-w. |
Styx
Wave Не получается. Всё равно вставляется эта же белиберда.Вот это и попробуй намаппить (через noremap!) на C-h и C-w. |
Wave, а что за белиберда-то? :)
Попробуй ещё слить все маппинги в файл, как я показывал выше, и глянь, может это что-то где-то шалит. |
В общем, поковырялся ещё, используя метод половинного деления опять. Выяснил, что в приколах с бекспейсом виновата строка set term=xterm
Показать полностью
" 256 цветов в конэму. if !has("gui_running") set term=xterm set t_Co=256 let &t_AB="\e[48;5;%dm" let &t_AF="\e[38;5;%dm" inoremap <Char-0x07F> <BS> nnoremap <Char-0x07F> <BS> endif Чисто охота нормальную цветовую схему использовать, на 256 цветов, с жирным-курсивом-подчёркиваниями и прочими подобными мелочами. Но увы, либо то, либо это. Я, конечно, ещё поковыряю документацию что одного продукта, что другого, но… Неовиму в отличие от вима в данном случае требуется только set termguicolors И, да, проблему с map <C-BS> <C-w> решить не получается никак, но вот при запуске gVim нормально работают и бекспейс, и контрол-бекспейс. Надо гуёвому виму ещё подобрать шрифт как-то, потому что тот, который по умолчанию, сильно многого не хочет нормально показывать. Например, значки у NERDTree. Упд. Еле-еле выяснил, что писать в конфиге надо так: set guifont=DejaVu_Sans_Mono:h10 (с подчёркиваниями). А ещё, что выбор шрифтов там почему-то очень бедный, и что далеко не все значки, в отличие от конэму, отображаются. Слуш, пара мелочей: Как гвим распахнуть на весь экран при запуске? Нашёл только паллиатив set columns=999 set lines=999 При указании set encoding=utf8 nobomb меню гвима стало показывать иероглифы. Я сдеал по-простому, убрал меню (и тулбар) вообще. Но это тоже паллиатив. Ну и ещё такое: при первом старте гвим говорит что-то типа «библиотеки не зарегистрированы, зарегистрировать?» — что за библиотеки и как бы этот вопрос вообще убрать? Дело в том, что в силу виртуализации после перезагрузки всё возвращается на круги своя и эти библиотеки вновь незарегистрированы. |
Wave
Как гвим распахнуть на весь экран при запуске? Нашёл только паллиатив Ну это и есть обычный способ для вима :)set columns=999 set lines=999 При указании set encoding=utf8 nobomb меню гвима стало показывать иероглифы. Я сдеал по-простому, убрал меню (и тулбар) вообще. Но это тоже паллиатив. Должно быть utf-8 (с дефисом). :h encoding-namesНу и ещё такое: при первом старте гвим говорит что-то типа «библиотеки не зарегистрированы, зарегистрировать?» А покажи точный текст ошибки. |
Должно быть utf-8 (с дефисом). :h encoding-names Без этой опции, с дефисом или без, всё нормально. |
Wave
Без этой опции, с дефисом или без, всё нормально. Тогда сделай так: запусти вим без этой опции, потом запусти команду: :set encoding? Посмотришь, какая кодировка активная, и добавь её же в настройки, но с добавление "nobomb".На самом деле эта фигня означает, что один раз за сеанс винды я при запуске gvim должен лишних два раза нажать enter (или каждый раз выбирать нет). Прост слегка раздражает. Ага, понял. Сделай какой-нибудь autoexec.bat (или что там нынче) в котором пропиши:<path-to-gvim>\gvim -silent -register Чтобы он запускался каждый раз при старте винды и втихаря регистрировал что ему нужно. |
Что-то мне всё меньше нравится XP, хотя я на ней сидел, можно сказать, до последнего.
|
Wave, C-a/C-x для увеличения/уменьшения. Может случайно нажал? :)
|
Перед маппингом C-a можно сначала сделать unmap. Ну или vnoremap <C-a> добавь ещё.
|