Size: a a a

2020 May 18

DD

Darkwing Duck in pro.vim
=) надеюсь понятно описал)) мне нужно чтобы из любого места проекта (из разной глубины, а в корне всегда лежит папочка .git) как-то подняться в корень проекта и сделать tag+=./.git/tags
источник

DD

Darkwing Duck in pro.vim
ща руками ввожу внутри вим-а, а надо автоматом
источник

AP

Andrey Polyanichko in pro.vim
Darkwing Duck
кто-нибудь генерирует tags каждый раз при сохранении?
нашел один мануал, хочу переделать чтобы перегенерировались каждый раз когда сохраняю файл (это достигнуто!), и чтобы он их "переподключал" командой tags+=директория

сделал так в .vimrc:
au BufWritePost *.php silent! !eval 'topdir="`git rev-parse --show-toplevel`" && $topdir/.git/hooks/ctags &'

т.к. все директории Глубже чем корневая - то сначала ищется корневая, потом от нее вызывается скрипт в корневая/.git/hooks/ctags , в котором:
#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"

gitdir="`git rev-parse --git-dir`"
cd $gitdir/..
projectdirectory=$PWD

# removing old file
trap 'rm -f "$projectdirectory/.git/$$.tags"' EXIT

# creating new tags file
ctags --tag-relative=yes -R -f "$projectdirectory/.git/$$.tags" --fields=+aimlS --languages=php --PHP-kinds=+cdfint-av --exclude="\.git"

#change original tags-file to just-created
mv "$projectdirectory/.git/$$.tags" "$projectdirectory/.git/tags"

после этого в .git/tags лежит верный файл tags

Остается подключить его командой tag+=новый файл... это нужно сделать в .vimrc
Вроде бы в вим без какихнибудь специальных плагинов отсутствует понятие проекта.... В ващем случае наверное логично будет получить корневую директорию так же из gitа 'topdir="git rev-parse --show-toplevel", но данное решение скорее всего не будет работать с сабрепами
источник

AP

Andrey Polyanichko in pro.vim
Darkwing Duck
кто-нибудь генерирует tags каждый раз при сохранении?
нашел один мануал, хочу переделать чтобы перегенерировались каждый раз когда сохраняю файл (это достигнуто!), и чтобы он их "переподключал" командой tags+=директория

сделал так в .vimrc:
au BufWritePost *.php silent! !eval 'topdir="`git rev-parse --show-toplevel`" && $topdir/.git/hooks/ctags &'

т.к. все директории Глубже чем корневая - то сначала ищется корневая, потом от нее вызывается скрипт в корневая/.git/hooks/ctags , в котором:
#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"

gitdir="`git rev-parse --git-dir`"
cd $gitdir/..
projectdirectory=$PWD

# removing old file
trap 'rm -f "$projectdirectory/.git/$$.tags"' EXIT

# creating new tags file
ctags --tag-relative=yes -R -f "$projectdirectory/.git/$$.tags" --fields=+aimlS --languages=php --PHP-kinds=+cdfint-av --exclude="\.git"

#change original tags-file to just-created
mv "$projectdirectory/.git/$$.tags" "$projectdirectory/.git/tags"

после этого в .git/tags лежит верный файл tags

Остается подключить его командой tag+=новый файл... это нужно сделать в .vimrc
я себя просто приучил открывать вим в корне проекта, тогда все пути будут относительно него считаться
источник

GK

Georgy Komarov in pro.vim
Darkwing Duck
кто-нибудь генерирует tags каждый раз при сохранении?
нашел один мануал, хочу переделать чтобы перегенерировались каждый раз когда сохраняю файл (это достигнуто!), и чтобы он их "переподключал" командой tags+=директория

сделал так в .vimrc:
au BufWritePost *.php silent! !eval 'topdir="`git rev-parse --show-toplevel`" && $topdir/.git/hooks/ctags &'

т.к. все директории Глубже чем корневая - то сначала ищется корневая, потом от нее вызывается скрипт в корневая/.git/hooks/ctags , в котором:
#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"

gitdir="`git rev-parse --git-dir`"
cd $gitdir/..
projectdirectory=$PWD

# removing old file
trap 'rm -f "$projectdirectory/.git/$$.tags"' EXIT

# creating new tags file
ctags --tag-relative=yes -R -f "$projectdirectory/.git/$$.tags" --fields=+aimlS --languages=php --PHP-kinds=+cdfint-av --exclude="\.git"

#change original tags-file to just-created
mv "$projectdirectory/.git/$$.tags" "$projectdirectory/.git/tags"

после этого в .git/tags лежит верный файл tags

Остается подключить его командой tag+=новый файл... это нужно сделать в .vimrc
Чем не устраивает vim-gutentags?

> If the current file you're editing is found to be in such a project, Gutentags will make sure the tag file for that project is up to date. Then, as you work in files in that project, it will partially re-generate the tag file. Every time you save, it will silently, in the background, update the tags for that file.


Он же, кстати, ищет root-маркеры в родительских директориях, что, в общем, решает твою проблему.
источник

М

Максим in pro.vim
[Решено] Кто нибудь использует vim-autoformat? По документации установил внешний форматтер shfmt, но vim его не видит почему-то.  Поделитесь конфигом, не важно если у вас какой-то другой форматтер для другого языка. Я разберусь сам...
источник

NS

Ni Shi in pro.vim
Максим
[Решено] Кто нибудь использует vim-autoformat? По документации установил внешний форматтер shfmt, но vim его не видит почему-то.  Поделитесь конфигом, не важно если у вас какой-то другой форматтер для другого языка. Я разберусь сам...
Я пользуюсь vim-ale проблем с установкой настройкой небыло
источник

М

Максим in pro.vim
Ni Shi
Я пользуюсь vim-ale проблем с установкой настройкой небыло
Кажется я нашел свою ошибку, упустил один пункт в доке. Если не получится, попробую ваш плагин. Спасибо!
источник

A

A in pro.vim
Ni Shi
Я пользуюсь vim-ale проблем с установкой настройкой небыло
+
источник

11

123 123 in pro.vim
как сделать перенос курсора через h/l на предыдущую/следующую строку соотвественно? (neovim)
источник

A

A in pro.vim
123 123
как сделать перенос курсора через h/l на предыдущую/следующую строку соотвественно? (neovim)
Присоединяюсь к вопросу. Искал тоже такое решение. Единственное, что пришло на ум: обрабатывать скриптом каждое перемещение. То есть - если символ первый, то k$, если последний, то - +, в остальных случаях обычное поведение. На сколько такое решение корректно?
источник

GK

Georgy Komarov in pro.vim
A
Присоединяюсь к вопросу. Искал тоже такое решение. Единственное, что пришло на ум: обрабатывать скриптом каждое перемещение. То есть - если символ первый, то k$, если последний, то - +, в остальных случаях обычное поведение. На сколько такое решение корректно?
:set ww=lh
источник

A

A in pro.vim
Georgy Komarov
:set ww=lh
Супер! Спасибо большое!
источник

GK

Georgy Komarov in pro.vim
A
Супер! Спасибо большое!
👍
источник

G

GNU/Vsevolod in pro.vim
Есть ли способ работать на нескольких строках кроме как записать макрос?
Напрмер
flags: {}
extra-package-dbs: []
packages:

надо превратить в
flags-b: {}
extra-package-dbs-b: []
packages-b:
источник

G

GNU/Vsevolod in pro.vim
Тут явно visual block не подойдет
источник

b⛅

bouncepaw ⛅ in pro.vim
GNU/Vsevolod
Есть ли способ работать на нескольких строках кроме как записать макрос?
Напрмер
flags: {}
extra-package-dbs: []
packages:

надо превратить в
flags-b: {}
extra-package-dbs-b: []
packages-b:
s/:/-b:/g
источник

b⛅

bouncepaw ⛅ in pro.vim
Предварительно надо выделить регион
источник

G

GNU/Vsevolod in pro.vim
bouncepaw ⛅
s/:/-b:/g
Или так. Но все же, есть ли подобие мультикурсора, как в имаксе
источник

b⛅

bouncepaw ⛅ in pro.vim
GNU/Vsevolod
Или так. Но все же, есть ли подобие мультикурсора, как в имаксе
Из коробки нет 🤔
источник