LINUX.ORG.RU

Расскажите про логику neovim/spacevim

 , nvim-qt, spacevim,


0

1

Оказалось что с иде для раста всё печально настолько, что неовим оказался наиболее удобным вариантом, бибикать и всё портить я уже научился, но есть проблемы.

Текущая ситуация: на последней кубунте установлен neovim-qt, сверху накачен скрипт spacevim.

Основная проблема в полной непривычности внутренней терминологии и логики вима. Т.е. проблема даже с правильной формулировкой запроса в гугл, а так же пониманием ответов на форумах.

  • По дефолту справа открывается панель с файлами, если я выбираю в ней файл с клавы, то он открывается слева, а если мышой то справа от панели с файлами. Как сделать одинаковое поведение?
  • Я знаю как называется панель с файлами справа, но я не понимаю как открыть её на том же самом месте, если я просто набираю её название, то она открывается слева, там же где и все файлы. Или лучше сделать так чтобы я вообще не мог закрыть эту панель.
  • Если я делаю сплит, то получаю один и тот же файлик и сверху и снизу, при чем табы есть только у верхней панельки. Как мне сделать две различные панельки с табами. При чем чтобы табы были у каждой свои?
  • Вообще не понимаю как называются части вима и действия над ними, например гуглеж по dock window/panel/tab не выдает ничего осмысленного.
  • Панели и табы пронумерованы, как мне переключаться между ними используя эти номера?
  • Возможно ли в принципе выделять текст шифт+стрелки и копипасту делать чем-то привычным вроде шифт+инсерт или контрол+в?
  • Я не могу закрыть табу с файликом, получаю Cannot close last window, я не понимаю почему он считает эту табу last window, при том что например дерево файлов или терминал он прекрасно закрывает. В интернете фигурирует команда :bdelete, но мой вим её не знает.
  • Как вообще понять почему вим не знает определённых команд? Научить его им?

Я предполагаю, что если правильно спрошу гугл, то пойму что мне делать, но я совершенно не понимаю как мне спросить гугл.

★★★★★

Обязательно использовать сборку вима, где всё работает на добром слове непонятно для вас?

fernandos ★★★
()

Основная терминология:

Buffer — открытый редактором файл, сессия в терминале, что-то отрисованное плагином и т.п. Window — кусок экрана который показывает кусок какого-либо буфера. Когда делаешь split, то как раз появляется новый window. Tab — сохранённая конфигурация расположения window на экране.

Я бы порекомендовал начать с минимальным init.vim, а потом в него уже докидывать плагины при желании.

PolarFox ★★★★★
()
" быстрое переключение между открытыми буфферами
nnoremap <F2> :BufstopFast<CR>

Перемещение между сплитами Ctrl-w h/j/k/l (или то же самое, но вместо букв стрелки).

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от PolarFox

Спасибо за словарик.

Приходил в голову вариант взять мнимум и обвешать, но я не хочу изучать вим, я хочу его использовать. Как мне понять какие плагины мне нужны?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от Im_not_a_robot

nnoremap <F2> :BufstopFast<CR>

Во-во. Рашифруй пожалуйста что это означает? Или скорее как мне это читать?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

nnoremap

Работает в Normal режиме (когда бибикает и все портит), не переназначать.

<F2>

Назначаем на клавишу F2

:BufstopFast

Комманду BufstopFast.

<CR>

Имитация нажатия Enter.

В виме кейбинды строятся как имитация действий пользователя. Т.е. ты прописываешь то, что делал бы сам в интерактивном режиме:

  1. нажал бы :, чтобы перейти в командный режим (строчка внизу);
  2. ввел бы команду BufstopFast;
  3. нажал бы <CR> (Enter).
Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 5)

Возможно ли в принципе выделять текст шифт+стрелки и копипасту делать чем-то привычным вроде шифт+инсерт или контрол+в?

Советую сразу забыть об этом.

" Чтобы работал системный буффер обмена при копировании/вставке
set clipboard+=unnamedplus
Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

В виме кейбинды строятся как имитация действий пользователя.

Слушай, а случайно не знаешь как сэмулировать нажатие Tab?

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Не, так не работает. У меня сейчас есть такой шорткат

nnoremap <C-o> :e %:p:h

но каждый раз нужно дополнительно жмякать, чтобы раскрыть переменные. Как сделать так, чтобы я сразу получал раскрытый путь как в emacs.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от ya-betmen

А можно поинтересоваться, чем не угодил VS Code? Тормозит? Я так-то всеми руками за неовим, но RA и к VS Code неплохо прикручен, как мне кажется.

zezic ★★★★
()
Ответ на: комментарий от zezic

Нуу, не то чтобы я успел потыкать его достаточно чтобы увидеть тормоза, но мало того что он черезжопный по природе, так мне ещё пришлось по кишкам плагина пришлось лазить чтобы прописать путь к rls.

Пока что я хз на чем останусь, копипаста в виме очень сильно ломает привычные действия.

ya-betmen ★★★★★
() автор топика

А какую ide для раста ты пробовал? Так-то он более-менее в IDEA работает с плагином на Rust.

peregrine ★★★★★
()
Ответ на: комментарий от ya-betmen

пришлось по кишкам плагина пришлось лазить чтобы прописать путь к rls

Вообще, там нужно просто мышкой кликнуть и поставить расширение «rust-analyzer» в нём всё само из коробки подтягивается и работает, а расширение «Rust» ставить не нужно.

А что касается (нео)вима, то я, как и некоторые другие, рекомендовал бы наворачивать на него плагины с нуля, чтобы хотя бы отдалённо понимать, что является встроенными фичами, а что (и как) реализовано при помощи плагинов.

«Хочу сразу юзать а не изучать» к виму применить будет затруднительно. К примеру, то же желание выделять текст через Shift+Стрелки противоречит основным особенностям (преимуществам) редактора, потому что для выделения текста в нём есть специальный режим, в котором доступны все его интересные фишки навигации по тексту.

zezic ★★★★
()
Ответ на: комментарий от peregrine

Много жрет, тормозит, когда внутренняя магия ломается остается только чистить кеши и перезапускать. Ну и всякая мелочь по юзабельности.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от zezic

К примеру, то же желание выделять текст через Shift+Стрелки противоречит основным особенностям (преимуществам) редактора

Нда, это нужно привыкать, это я уже понял.

ya-betmen ★★★★★
() автор топика

Оказалось что с иде для раста всё печально настолько, что неовим оказался наиболее удобным вариантом…

Не смог пройти мимо и не пооффтопить. Про плагины Rust для IDEA, Atom, VSCode ты, конечно, слышал? Под vim много чего накорячили для Rust, но не факт, что оно даже не близко будет к функционалу перечисленных IDE. Интересно, что из перечисленного ты пробовал и чем не понравилось? Чем IDE для Rust так сильно отличается от других IDE?

Все правильно в ветке говорят, что если нет навыка работы с vim, то лучше бы сначала освоить его базу, а то будет сплошное страдание. vimtutor в помощь, по нему можно сносно освоить редактор. Ну так недельку-другую :)

И да, все-таки, vim - это не то чтобы IDE, хоть и редактор бессменно клевый :)

Сам ковыряюсь с Rust в vim’е, но серьезно не заморачивался поддежкой языка. И на работе нередко пишу код в vim, но на Go. Поддежка Go, кстати, на весьма неплохом уровне (с автокоплитом аж).

Ну и конфигом поделюсь, конечно же: https://gist.github.com/dmfed/8087c215a339dc187b7b59203f2f6e10

А, и последнее, но тож важное: можно еще SpaceVim посмотреть, он очень прикольный и является эдаким мостиком между кучей плагинов, который унифицирует работу с разными языками и плагинами до более-менее одного интерфейса. Я пробовал, понравилось, но не зашло постоянно пользоваться.

paddlewan
()
Ответ на: комментарий от paddlewan

P.S. Если отрезать часть конфига начиная с момента, где плагины подгружаются, то тоже очень удобная конфигурация остается, кстати. Везде с собой тащу, куда есть доступ.

paddlewan
()
Ответ на: комментарий от anonymous

Использовать можно VSCode, а Vim придётся сначала изучать.

VSCode как раз идейно ближе к конструкторам тип вима и емакса, а не к классическим IDE так что его надо также сначала настраивать, хотя и настроить его конечно и проще, но прямо из коробки он никуда не поедет.

anonymous
()
Ответ на: комментарий от paddlewan

Везде свои проблемы, за конфиг спасибо.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от anonymous

но прямо из коробки он никуда не поедет.

Базовая подсветка синтаксиса, емнип, есть из коробки для многих языков. Для меня все настройки - это установка по одному плагину для нужных языков. Это 5 минут времени. Для Go хватает ровно одного плагина, но он тянет за собой кучу инструментов под капотом (gopls и разное всякое). По сути, накатил vscode, поставил один плагин - и можно работать :)

paddlewan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.