Comments 45
А как добавить в git индекс все измененные, новые и переименованные файлы?
+1
Спасибо за статью и продвижение vim. Я как пользователь vim(4 года уже) не представляю работу без него.
Самая крутая идея vim — это режимы редактирования и навигация, после освоения vim не как редактора, а как идеи для редактирования текста, жизнь становится ярче и повсюду радуги и единороги)
Сейчас у меня vim навигация в браузере, даже этот текст я пишу в vim(https://chrome.google.com/webstore/detail/wasavi/dgogifpkoilgiofhhhodbodcfgomelhe?hl=en-US), vim-like навигация в консоли, vim-mode в RubyMine, даже в клиенте твитерра под МакОс есть что-то на подобии такой навигации.
В общем, кто ценит свое время — изучайте vim. Удачи.
Самая крутая идея vim — это режимы редактирования и навигация, после освоения vim не как редактора, а как идеи для редактирования текста, жизнь становится ярче и повсюду радуги и единороги)
Сейчас у меня vim навигация в браузере, даже этот текст я пишу в vim(https://chrome.google.com/webstore/detail/wasavi/dgogifpkoilgiofhhhodbodcfgomelhe?hl=en-US), vim-like навигация в консоли, vim-mode в RubyMine, даже в клиенте твитерра под МакОс есть что-то на подобии такой навигации.
В общем, кто ценит свое время — изучайте vim. Удачи.
+2
А чем так уж удобно разделение на режимы навигации и редактирования? Разве это наоборот не замедляет набор, особенно при написании кода, в котором не получится просто писать длинную партянку текста без постоянной навигации по тексту, как на печатной машинке.
+1
vi-like навигация удобнее тем что не надо постоянно перепрыгивать на мышку и обратно.
+1
Ну, мне скорей интересно, чем vim-like навигация лучше, в сравнении с навигацией в emacs, когда вся навигация висит на хоткеях… просто многие себе в томже emacs настраивают vim-like навигацию и утверждают, что так удобней, а я вот что-то пока не проникся этой темой…
+1
Удобство в доступном для слепого метода печати сочитании клавишь.
+1
ну постараюсь привести пример. есть код, мы в режиме «нормал». курсор в начале.
задача — заменить слово тест на «hello»
|some_method(«test»)
что нужно нажать в вим: f«ci»hello
как это сделать в простом редакторе?
задача — заменить слово тест на «hello»
|some_method(«test»)
что нужно нажать в вим: f«ci»hello
как это сделать в простом редакторе?
+1
«в простом редакторе» — умойтесь, все emacs-хейтеры, так emacs еще никто не опускал :)
0
Ну… пишем в init.el примерно такой код:
(defun goto-forward-quote ()
(interactive)
(search-forward-regexp "'+\\|\\\"+" nil t))
(global-set-key (kbd «C-») 'goto-forward-quote)
Он позволяет при помощи хоткея ходить по скобкам вперед.
Соответственно находясь в начале строки, можно нажать Ctrl+End, курсор перейдет в начало слова «test» а там с insert'ом заменяемяем «test» на «hello».
Но на пратике лично мне удобней пользоваться переходами по словам/символам и в конец строки/начало строки.
(defun goto-forward-quote ()
(interactive)
(search-forward-regexp "'+\\|\\\"+" nil t))
(global-set-key (kbd «C-») 'goto-forward-quote)
Он позволяет при помощи хоткея ходить по скобкам вперед.
Соответственно находясь в начале строки, можно нажать Ctrl+End, курсор перейдет в начало слова «test» а там с insert'ом заменяемяем «test» на «hello».
Но на пратике лично мне удобней пользоваться переходами по словам/символам и в конец строки/начало строки.
0
UFO just landed and posted this here
есть плагин для работы с Git и давольно популярный — Fugitive. Умеет много чего, например частичные коммиты (т.е. в коммит попадают только часть изменений текущего файла), советую.
+1
Слышал. Он умеет GUI интерфейс и Vim-diff сравнение изменений?
+1
diff умеет, на счёт веток не уверен.
+1
Ну как я сказал в статье, diff бывает разный. О каком именно diff вы говорите? Или умеет оба?
+1
vim-diff. Второй же можно просто получить командой git diff и отправить в буффер, но я не знаю зачем он нужен.
+1
Второй же можно просто получить командой git diff и отправить в буффер
Так мы же не устанавливаем плагин для Vim, чтобы команды git diff запускать и отправлять выхлоп в буфер )
я не знаю зачем он нужен
Если вам нужно посмотреть различия сразу нескольких файлов, на пример.
+1
Можно открыть буфер с выводом git status и затем на нужном файле нажать D, чтобы посмотреть git diff:
Но обычно редактируемые файлы и так открыты в буферах и нужно только на нужных
:Gstatus
D
Но обычно редактируемые файлы и так открыты в буферах и нужно только на нужных
:Gdiff
делать. Зачем полный вывод git diff (все файлы сразу) смотреть — не знаю.+1
Когда вы принимаете чужие изменения, гораздо проще смотреть полный Git-diff, чем открывать каждый файл в редакторе (предварительно записав куда то список измененных файлов) и читать их Git-diff.
0
Да, об этом я не подумал. Никогда не работал мэнтэйнером, для них действительно полезно.
0
В планах интегрировать vim_git с github или bitbucker так, чтобы можно было комментировать строки кода прямо из Vim. Не знаю, это фишка Git или конкретно этих веб-сервисов, но очень удобная.
0
Git тут абсолютно не при чём. Встроенная возможность что‐то комментировать есть только в fossil, но, насколько я знаю, там только встроенные в репозиторий wiki и issue tracker. Довольно долгое время bitbucket не давал возможность комментировать строки изменений.
Кстати, насколько я знаю, ни один из сервисов такой возможности не имеет: я знаю комментарии к строкам в различиях изменения, к самому изменению и к строкам в аггрегированных различиях PR, но не к строкам кода.
Кстати, а как вы будете делать такую возможность: system('curl') или +python/+ruby/…? Без просмотра имеющихся комментариев возможность не такая полезная.
Кстати, насколько я знаю, ни один из сервисов такой возможности не имеет: я знаю комментарии к строкам в различиях изменения, к самому изменению и к строкам в аггрегированных различиях PR, но не к строкам кода.
Кстати, а как вы будете делать такую возможность: system('curl') или +python/+ruby/…? Без просмотра имеющихся комментариев возможность не такая полезная.
0
Ещё git diff полезен для самопроверки перед созданием изменения. Я даже в моём aurum автоматически открываю буфер с diff при фиксировании изменения. Разве вам никогда не хотелось окинуть взглядом все изменения, чтобы посмотреть (или поискать), не забыли ли вы где‐то отладочный print? Или (в случае с частичной фиксацией (пример: git add -p + git commit, но я использую другой интерфейс)) — проверить, что вы ничего не забыли из того, что хотели и забыли всё, что не хотели зафиксировать.
0
С этим я не спорю — полезный и часто используемый кейс. Я к тому, что в редакторе вывод diff всех файлов будет неудобен, на мой взгляд. Вызываю обычно из соседнего терминала в tmux/byobu.
Посмотрел — fugitive умеет и такой вывод (как в терминале). Он предоставляет обёртку над командами, которые напрямую не визуализирует. В данном случае
Посмотрел — fugitive умеет и такой вывод (как в терминале). Он предоставляет обёртку над командами, которые напрямую не визуализирует. В данном случае
:Git diff
. Неудобно, что он как бы сворачивает vim и показывает это на весь терминал. Создать новый split и показать в нём было бы полезнее.0
О том и речь, fugitive просто реализует Vim команды, которые выполняют git в терминале. Не вижу удобство такого плагина, когда есть :!git…
0
Он далеко не только это делает. Fugitive — удобнейший инструмент для работы с git. При наличии времени можете посмотреть серию vimcasts, чтобы увидеть его возможности:
#31 Fugitive.vim — a complement to command line git
#32 Fugitive.vim — working with the git index
#33 Fugitive.vim — resolving merge conflicts with vimdiff
#34 Fugitive.vim — browsing the git object database
#35 Fugitive.vim — exploring the history of a git repository
The Fugitive Series — a retrospective
#31 Fugitive.vim — a complement to command line git
#32 Fugitive.vim — working with the git index
#33 Fugitive.vim — resolving merge conflicts with vimdiff
#34 Fugitive.vim — browsing the git object database
#35 Fugitive.vim — exploring the history of a git repository
The Fugitive Series — a retrospective
0
Мой aurum находит самое большое окно по соседству с окном (это не единственный вариант: можно и split, а можно и отключить), в котором предполагается писать пояснения к изменению и открывает diff там. При отмене и фиксации изменения diff пропадает, предыдущий буфер возвращается на место (на случай если Delphinum будет делать такое в своём дополнении, напомню про &bufhidden: буфер нужно скрывать; и я читал людей, которые не используют
Если вы посмотрите diff в командной строке, то он что‐то безвозвратно заменит. Иногда настолько безвозвратно, что и scrollback buffer не поможет. И ещё там нет свёрток (aurum имеет также в своём составе ftplugin, добавляющий свёртки к diff’ам: bitbucket.org/ZyX_I/aurum/src/ee5d7e8121f3e7380eb5abedf42895346294cccc/ftplugin/diff.vim, можно использовать без aurum и его зависимостей, что даже удивительно (обычно я пишу всё с зависимостью, как минимум, от frawor)).
Git diff, насколько я понимаю, практически напрямую вызывает :!git diff. Бесполезная возможность по мне.
set hidden
).Если вы посмотрите diff в командной строке, то он что‐то безвозвратно заменит. Иногда настолько безвозвратно, что и scrollback buffer не поможет. И ещё там нет свёрток (aurum имеет также в своём составе ftplugin, добавляющий свёртки к diff’ам: bitbucket.org/ZyX_I/aurum/src/ee5d7e8121f3e7380eb5abedf42895346294cccc/ftplugin/diff.vim, можно использовать без aurum и его зависимостей, что даже удивительно (обычно я пишу всё с зависимостью, как минимум, от frawor)).
Git diff, насколько я понимаю, практически напрямую вызывает :!git diff. Бесполезная возможность по мне.
0
И ещё там нет свёрток
Vim из коробки умеет свертки diff.
Git diff, насколько я понимаю, практически напрямую вызывает :!git diff. Бесполезная возможность по мне.
Если выбрасывать его в Vim, то гораздо удобнее, чем читать в терминале, ибо подсветка, сверки, vim-like управление и т.д.
0
Вообще‐то я говорил про терминал. Но Vim всё равно не умеет свёртки из коробки: code.google.com/p/vim/source/browse/runtime/ftplugin/diff.vim?r=bfc3682510d68e594ef3a81ffaaf16468c8276e2. Где здесь свёртки:
" Vim filetype plugin file
" Language: Diff
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2005 Jul 27
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = "setl modeline<"
" Don't use modelines in a diff, they apply to the diffed file
setlocal nomodeline
?Если выбрасывать его в Vim, то гораздо удобнее, чем читать в терминале, ибо подсветка, сверки, vim-like управление и т.д.Именно об этом я и говорю.
0
Где здесь свёртки?
Я об этом:
Vim-diff![](https://habrastorage.org/r/w1560/files/f35/8ad/697/f358ad697f774a18a309415fdeb637b4.png)
![](https://habrastorage.org/files/f35/8ad/697/f358ad697f774a18a309415fdeb637b4.png)
0
Я я о свёртках diff’ах. Не в vimdiff, он тут совсем не при чём, а в буферах с патчем и filetype=diff.
0
Есть простые решения, но зачем, если git diff сам обрезает файл, оставляя только строки с изменениями.
0
Вообще‐то в этой ветке обсуждался полный diff. И вы сами говорили, зачем такое нужно: habrahabr.ru/post/261783/#comment_8488049. И я говорил, что полный diff у меня для review. Свёртки пригождаются при просмотре больших diff’ов.
0
И вы явно не поняли, что сворачивается. А сворачиваются во‐первых, каждый файл отдельно (первый уровень). Во‐вторых, каждый кусок (hunk) — то, что имеет строку вида
@@ -3491,3 +3491,4 @@
в качестве заголовка (последняя свёртка полезна в основном только если вы использовали --show-c-function или аналог при создании diff’а) — второй уровень.0
Кстати, есть одна возможность в aurum, которую я, на момент его разработки, нигде не видел и использую часто: AuHyperlink, копирующая в буфер обмена различные URL: обычно ссылки на HTML или RAW версии файла, первые — часто с конкретными указаниями на строку, ещё есть clone и push URL (не использовались почти никогда, т.к. URL’ы от GH и BB я могу и по памяти написать), ссылки на просмотр изменения в веб‐интерфейсе (использовались редко), ссылка на лог (использовалась практически только для тестов). Fugitive имеет вместо этого :Gbrowse, но я совершенно не понимаю, зачем (зато есть :Gbrowse!, использующий clipboard; AuHyperlink имеет бесконечно больше двух вариантов использования, но только один легко доступен по‐умолчанию). (Ещё fugitive имеет :Gbrowse {rev}@{remote}, а у меня @{remote} нет, что нехорошо.)
0
интересно
-2
Sign up to leave a comment.
Vim по полной: Работа с Git