Vim: подскажите как делать отступы до комментариев?

и другие vi-подобные редакторы

Модератор: /dev/random

Аватара пользователя
UnixNoob
Сообщения: 1470
ОС: Slackware

Vim: подскажите как делать отступы до комментариев?

Сообщение UnixNoob »

Приветствую. По-моему я когда-то находил решение для подобного, но запамятовал, как можно выравнивать следующее:

Код: Выделить всё

# Добавление элементов в список:
mylist+=(one)    # mylist[1]
mylist+=(two)    # mylist[2]
mylist+=(three)  # mylist[3]
mylist+=(four five)   		# mylist[5]
mylist+=(six)              # mylist[6]
чтобы оно стало выглядеть так:

Код: Выделить всё

# Добавление элементов в список:
mylist+=(one)			# mylist[1]
mylist+=(two)			# mylist[2]
mylist+=(three)		# mylist[3]
mylist+=(four five)		# mylist[4] mylist[5]
mylist+=(six)			# mylist[6]
(что-то ломается форматирование и элемент уезжает, но суть думаю ясна)
С Ctrl+V ручками получается долго, явно должно быть какое-то более автоматизированное решение.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20977
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение Bizdelnick »

Скорее всего, тут надо плагин для конкретного ЯП искать, который это бы умел.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Aliech
Сообщения: 1029
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение Aliech »

А шаг табуляции сейчас сколько выставлен в vim'е?
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1470
ОС: Slackware

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение UnixNoob »

Aliech
4 пробела.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Aliech
Сообщения: 1029
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение Aliech »

UnixNoob писал:
23.05.2023 02:36
4 пробела.
Я так и подумал. Это, конечно, не то, о чём вы спрашивали, но не просто так традиционно в табе их (пробелов) восемь.
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20977
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение Bizdelnick »

А, да, такие отступы табами делать в принципе нельзя, иначе будут по-разному выглядеть в зависимости от настроек. Только пробелы. В начале строки табы ещё годятся, там они внешний вид ни при каких настройках не ломают. Хотя я предпочитаю set expandtab и забыть о них насовсем.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5362
ОС: Gentoo

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение /dev/random »

Bizdelnick писал:
23.05.2023 09:46
Хотя я предпочитаю set expandtab и забыть о них насовсем.
Главное - при редактировании Makefile эту опцию случайно не поставить.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение olecya »

Как по мне вся эта автоматика только тормозит процесс написания кода если ты владеешь методом слепого набора.
Я пыталась например писать функции в баш так:

Код: Выделить всё

autocmd FileType sh inoremap (<CR> () {<CR>}<Esc>O
То есть, в .vimrc скобочка и за ней клавиша enter в режиме вставки интерпретируется как

Код: Выделить всё

() {
    v - позиция курсора
}
Можно по аналогии поэкспериментировать, например пробел и решётка переводятся как два таба и решетка (кроме как в комментариях, по-моему, после пробела решетка не ставится, например в строчных подстановках):

Код: Выделить всё

au FileType sh inoremap <space># <tab><tab>#
В режиме редактирования скрипта при нажатии на пробел редактор будет ожидать некоторое время для определения какой символ будет идти после и если это решетка то заменится на два таба и решетку или если другой символ или будет задержка отобразится просто пробел. Подобное у меня осталось в закомментированном виде в архиве как примеры которые не оправдали свою полезность.
Добавлено (14:03):
Можно еще в таких случаях определить например двойную решетку(по моему даже удобней):

Код: Выделить всё

inoremap ## <tab><tab>#<space>
Добавлено (14:31):
UnixNoob писал:
23.05.2023 02:36
4 пробела.
Ну может быть еще и так придется сделать:

Код: Выделить всё

inoremap ## <C-V><tab><C-V><tab>#<space>
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1470
ОС: Slackware

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение UnixNoob »

olecya, но это никак не помогает с выравниваем разных по длине строк :(
Только если заклыдывать сильно больше отступов, для удобного выделения с ctrl-v и дальнейшим форматированием, иначе, если строка перекрывает комментарии выше, то появляется проблема со сдвигом.
Добавлено (14:38):
Bizdelnick писал:
23.05.2023 09:46
Хотя я предпочитаю set expandtab и забыть о них насовсем.
Это включено по-умолчанию, с частичным изменением под часть расширений.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение olecya »

UnixNoob
А если определить двумя решетками грандиозный отступ от начала?

Код: Выделить всё

au FileType sh inoremap ## <esc>80a<space><esc>d80<bar>a#<space>
Отступ в 80 столбцов с запасом потому что если предыдущая строка будет больше - то остаток удалится.
Добавлено (15:30):
Может просто определить на какую нибудь клавишу F табуляцию <c-v><tab> и нажимать сколько надо?
Добавлено (15:41):
Вот шифт с табуляцией будет табуляция, а не 4 пробела:

Код: Выделить всё

inoremap <S-Tab> <c-v><tab>
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1470
ОС: Slackware

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение UnixNoob »

olecya писала:
23.05.2023 15:27
А если определить двумя решетками грандиозный отступ от начала?
Код: Выделить всё
au FileType sh inoremap ## <esc>80a<space><esc>d80<bar>a#<space>
Ну вот такое что-то наверное надо :) Спасибо.
Табы то все-равно не сойдутся, при разной длине строки, я ж их вставляю от последнего символа в строке, а не от начала.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение olecya »

UnixNoob писал:
23.05.2023 18:07
Табы то все-равно не сойдутся, при разной длине строки,
Это работает немного иначе, добавляется к концу строки 80 пробелов<space> и от начала строки сохраняется только 79 колонок<bar>. 81 добавляется решетка и 82 пробел. Хоть один символ напишите хоть 79, знак комментария будет на 81 позиции, а значит от начала.
Добавлено (19:00):
Если заменить d на D будет возможным сохранять 80 колонок вместо 79 без пробельного символа перед знаком комментария.
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1470
ОС: Slackware

Re: Vim: подскажите как делать отступы до комментариев?

Сообщение UnixNoob »

olecya
Я имел в виду если использовать это решение, то выравнивать все-равно руками придется.
olecya писала:
23.05.2023 15:27
Может просто определить на какую нибудь клавишу F табуляцию <c-v><tab> и нажимать сколько надо?
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали: