Vimium: [๊ธฐ๋Šฅ ์š”์ฒญ] ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ

์— ๋งŒ๋“  2015๋…„ 01์›” 21์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: philc/vimium

Vimium์ด ์„ค์ •์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Chrome์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ๊ตฌ์„ฑ์„ ์‰ฝ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์—†์ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ •์˜๊ฐ€ ํฌํ•จ๋œ ์„ธ ๊ฐœ์˜ ํ…์ŠคํŠธ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์™ธ๋œ URL, ์Šคํƒ€์ผ ์ง€์ •์„ ์œ„ํ•œ CSS, ์ˆ˜๋™์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ํ‚ค ๋งคํ•‘(ํ™•์ธ๋ž€์— ์˜์กดํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํŒŒ์ผ ํฌํ•จ).

๋ชจ๋“  ์„ค์ •์„ ๋‚ด๋ณด๋‚ด๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ์„ค์ •์„ ์ผ๋ฐ˜ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„(์ ์–ด๋„ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๋กœ ์ž๋™์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก) ๋งค์šฐ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‹ ๊ฒฝ์ด ์“ฐ์ธ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @vitorgalvao์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜ ํŽ˜์ด์ง€ ์ธํ”„๋ผ์˜ ์ž„๊ณ„๊ฐ’ ์ด์ƒ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Chrome์— ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค...

์ด ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ถ”๊ฐ€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Chrome์— ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค...

Chrome ์‚ฌ์šฉ์ž์˜ ๋ช‡ ํผ์„ผํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์—†์ง€๋งŒ ๊ธฐ์ˆ ์ ์ธ ์„ฑํ–ฅ์ด ์žˆ๋Š” ๋งŽ์€ ์‚ฌ์šฉ์ž(Vimium๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ฐพ๊ณ  ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ)๋Š” ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฌธ์ œ๋กœ ์ธํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์šฉ๋„์— ๋Œ€ํ•ด์„œ๋งŒ ๋งํ•˜์ž๋ฉด, ๊ตฌ์„ฑ์„ ์ฝ์„ OS์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ๋‹จ์ผ ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋งˆ์Œ๋Œ€๋กœ cp ๋ฐ mv ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Vrome ์ด ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‘ ๋ฒˆ์งธ๋กœ ์›ํ•œ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ๋งคํ•‘ ํ•ด์ œ๋ฅผ ๊ณ ๋ คํ–ˆ๊ณ 
๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ์— ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š”
๋งคํ•‘ ํ•ด์ œ ๋ฐ ๋งคํ•‘์ด t์™€ ๊ฐ™์€ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ์ผ๋ถ€ ํ‚ค์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ
๋ฐ T(๊ต์ฒดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค) ๋ฐ i๋ฅผ I๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๋‹ค๋ฅธ
์ถ”๊ฐ€ ๋™์ž‘์„ ํ•™์Šตํ•  ํ•„์š” ์—†์ด i๋ฅผ ํ†ตํ•ด Inbox ๋ฐ Gmail๋กœ ์ „์†ก).

t ์™€ T ๋„ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค...

map t Vomnibar.activateTabSelection
map T createTab

i ์„ I ๋กœ "์ด๋™"ํ•  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ ์ถ”๊ฐ€ ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค...

map I enterInsertMode

(์ €๋Š” ํŽ˜์ด์ง€์˜ j ๋ฐ k ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ์—๋„ Gmail ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก J ๋ฐ K ๋ฅผ ์Šคํฌ๋กค ๋ช…๋ น์— ๋งคํ•‘ํ•˜๋Š” ์œ ์‚ฌํ•œ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. k ๋ฐ”์ธ๋”ฉ.)

@smblott-github๋Š” J์™€ K ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒญ ์ „ํ™˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ €๋Š” vomnibar ํƒญ ์ ํ”„ ์‚ฌ์ด์— ๊ฝค ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

+1

์˜ค๋Š˜ Vimium ์„ค์ •์„ ๋ชจ๋‘ ์žƒ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. Chrome์€ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด ์†์ƒ๋˜์—ˆ๋‹ค๊ณ  ๋งํ–ˆ๊ณ  "๋ณต๊ตฌ"๋ฅผ ํด๋ฆญํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ 30๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด์ œ Vimium ์˜ต์…˜ ํŽ˜์ด์ง€์—์„œ JSON.stringify(localStorage) ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐฑ์—…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜ ํŽ˜์ด์ง€ ์ธํ”„๋ผ์˜ ์ž„๊ณ„๊ฐ’ ์ด์ƒ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋ณด๋ฉด Show Advanced Options ๋ฒ„ํŠผ ์•„๋ž˜์— ์ด๋ฏธ ๋งŽ์€ ์˜ต์…˜์ด ์ˆจ๊ฒจ์ ธ ์žˆ๋Š”๋ฐ ์™œ ํ•˜๋‹จ์— ๋ฒ„ํŠผ์ด ๋‘ ๊ฐœ ์žˆ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋ ๊นŒ์š”?
image

๋„ˆ๋ฌด ๋งŽ์€ ์˜ต์…˜์œผ๋กœ ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ๋”๋Ÿฝํžˆ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์ดํ•ดํ•˜๊ฒ ์ง€๋งŒ, ๊ทธ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ˆจ๊ฒจ์ง€๊ณ  "๊ณ ๊ธ‰"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ๋ถ™๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋ชจ๋“  ๋‚ด๊ธฐ๊ฐ€ ๊บผ์ง‘๋‹ˆ๋‹ค.

... JSON.stringify(localStorage) ํ•˜์—ฌ ๋ฐฑ์—…์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ...

@fnkr.... ์ด๊ฑฐ ์กฐ์‹ฌํ•˜์„ธ์š”. ๋จผ์ € localStorage ๋Š” ์„ค์ •์˜ ๊ธฐ๋ณธ ์ €์žฅ ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” chrome.storage.sync ์— ์žˆ๊ณ , ์•„์ฃผ ์ž‘์€ ๋ ˆ๊ฑฐ์‹œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ๋Š” chrome.storage.local ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ๋•Œ๋•Œ๋กœ ์„ค์ •์ด ์ €์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ„์น˜๋ฅผ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋ฉด ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค๋ช…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค์ •์— ์•ก์„ธ์Šค ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Settings API๊ฐ€ ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค(์ €์žฅ ๋ฐ ์ „ํŒŒ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—).

Settings.get(key)
Settings.set(key, value)

์—ด์‡ ๋Š” ์—ฌ๊ธฐ

๊ณ ๊ฐ€ ์„ค์ •์˜ ๊ฒฝ์šฐ... keyMappings ๋ฐ searchEngines ๋Š” ํ…์ŠคํŠธ์ผ ๋ฟ์ด๋ฏ€๋กœ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. exclusionRules ๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ˆ, chromium-vim (Vrome๊ณผ ๋™์ผ)

+1
fnkr ๊ณผ ๊ฐ™์€ ๋™์ผํ•œ "์ˆ˜๋ฆฌ"๋ฌธ์ œ๊ฐ€ ์˜ค๋Š˜ ๋‚˜์—๊ฒŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ €๋Š” ๋” ์ด์ƒ Vimium์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๊ด€์‹ฌ์„ ๋ณด์ธ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋” ์ด์ƒ ๊ด€์‹ฌ์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ๊ฒฝ์ด ์“ฐ์ธ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ง์žฅ์—์„œ๋Š” ์ง์—… ํ”„๋กœํ•„๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ์ง‘์—์„œ๋Š” ๋‚ด(๊ฐœ์ธ) ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋‚ด๋ณด๋‚ด๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ์‚ฌ์ด์— ์„ค์ •์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Chrome์— ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค...

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด 2์„ผํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ฌผ๋ก  Chrome์— ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Vimium์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ์ˆ ์ ์ธ ํŠน์„ฑ๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” Google์˜ ๋™๊ธฐํ™” ์„œ๋น„์Šค ์—†์ด Vimium ์„ค์ •์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด _๊ฒฐ์ •_๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ์„  ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ž์œ ์˜ ๋ฌธ์ œ๋กœ ์ƒ๊ฐํ•˜๋ฏ€๋กœ Chromium์„ ์„ ํƒํ•˜๊ณ  Vimium์„ ์„ ํƒํ•œ๋‹ค๊ณ  ํ•ด์„œ Google์˜ ์ž‘์—… ๋ฐฉ์‹์— ์–ฝ๋งค์—ฌ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋“ค์–ด์˜ค๋Š” ๋งŽ์€ VimFX ์‚ฌ์šฉ์ž(์ €๋ฅผ ํฌํ•จํ•˜์—ฌ)๊ฐ€ ๊ฐ–๊ณ  ์‹ถ์–ดํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•˜๋ฏ€๋กœ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์œผ๋กœ ๋”์šฑ ๋„๋ฆฌ ํผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

+1. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ Chrome๊ณผ Firefox ๊ฐ„์— Vimium ์„ค์ •์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. vimium-ff ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ๊ด€๋ จ์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰