본문 바로가기메뉴 바로가기


vimrc 건드리기 좋은 목요일입니다. 😉

기술 블로그 담당자가 글을 내놓으라고 닥달하니, 예전에 만들었던 플러그인이나 한번 꺼내볼까 합니다:

https://github.com/junegunn/vim-github-dashboard

vim-github-dashboard 실행 화면

Vim 상에서 GitHub API를 이용해 dashboard 페이지를 보여주는 플러그인입니다. 왜 멀쩡한 브라우저를 놔두고 이런 짓을 한 것이냐 물으신다면 … 그것 참 좋은 질문이네요.

Vimscript 만 가지고는 API 결과를 받아오는 것이 불가능하므로 Ruby interface를 이용합니다만 (:help ruby) OS X 의 시스템 디폴트 Vim 에서 기본적으로 지원하기 때문에 사용하시는데 문제는 없을 겁니다.

제공하는 커맨드는 다음과 같습니다.

  • GHDashboard[!] [user]
    • 특정 유저의 dashboard 화면
  • GHActivity[!] [user|repo]
    • 특정 유저 혹은 repository 의 활동 내역

Public GitHub 의 경우 조회만 하는 경우는 인증이 필요 없기 때문에 느낌표를 붙여서 실행하시면 되겠습니다.

:GHD! junegunn
GHD 명령으로 사용자의 대시보드 보기

CTRL-N / CTRL-P 로 링크 사이를 이동할 수 있고, Enter key 나 o를 누르면 해당 페이지가 브라우저에서 열립니다.

매번 본인의 ID 를 입력하는 것이 번거롭다면 다음과 같은 설정을 vimrc 에 추가하세요.

let g:github_dashboard = { 'username': 'junegunn' }

GHA 커맨드도 마찬가지 방식으로 사용합니다.

:GHA! torvalds
GHA 명령으로 torvalds의 활동 보기

Linus 선생님이 무얼하며 지내시는지 볼 수도 있고요,

:GHA! torvalds/linux
GHA 명령으로 linux 프로젝트의 활동 보기

Linux에 무슨 일들이 벌어지고 있는지도 간단히 확인할 수 있습니다.

사내에서 사용하는 GitHub Enterprise에 접근하려면 프로파일을 지정해야 하는데요. g:github_dashboard#프로파일명 의 변수를 선언하면 GHD -프로파일명 과 같은 형태로 사용하실 수 있습니다.

다음과 같은 식으로 foo 프로파일을 정의하면 됩니다.

let g:github_dashboard#foo = {
  \ 'username':     'your-github-enterprise-username',
  \ 'password':     ACCESS_TOKEN,
  \ 'api_endpoint': 'https://your-github-enterprise-host-name/api/v3',
  \ 'web_endpoint': 'https://your-github-enterprise-host-name' }

(Access token 은 https://your-github-enterprise-host-name/settings/applications 에서 발급 가능)

이제 foo 프로파일을 사용하여 bar 사용자의 baz 프로젝트에서는 무슨 일이 벌어지고 있나 보려면 다음과 같이 하시면 됩니다. 인증이 필요하므로 ! 이 없는 커맨드를 실행합니다.

:GHA -foo bar/baz

멀쩡한 브라우저 놔두고 왜 vim에서 이런 짓(?)을 하냐는 최초의 질문에 대한 답변은 Emacs 아저씨의 말씀으로 대신하도록 하죠.

Playfully doing something difficult, whether useful or not, that is hacking.

그래도 굳이 사용해야 할 이유를 찾아 보자면, 내가 아닌 다른 사람의 대시보드 화면이나 특정 저장소의 활동 정보를 목록으로 볼 수 있는 페이지가 GitHub 에 없기 때문에 그런 용도로 사용해 보실 수는 있겠습니다.

이 글은 ranked.in 선정 한국 개발자 인기 1위한국 저장소 인기 1위 2관왕에 빛나는 “빔신” jg.choi가 사내 게시판에 올린 글을 저자의 동의를 얻어 옮긴 것입니다. 저자의 깃헙을 방문하시면 다양한 vim 플러그인과 유틸리티들, 그리고 빔신의 vimrc를 보실 수 있습니다.

Avatar
jg.choi 카카오에서 대용량 데이터 처리를 위한 플랫폼을 만들고 관리하고 있습니다. 개발 생산성 향상에 관심이 많아 여러 오픈소스 툴들을 개발해오고 있습니다.
Top Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
App2App
applicative
Architecture
arena
async
aurora
Backend
BApp
bgp
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
Cache
cahtbot
Caver
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
Ground X
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly
All Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
App2App
applicative
Architecture
arena
async
aurora
Backend
BApp
bgp
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
Cache
cahtbot
Caver
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
Ground X
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly

위로