ãã®è¨äºã¯ 2016 å¹´ 12 æã« Qiita ä¸ã§è¡ããã Vim 8.0 Advent Calendar ã 1 ã¤ã«ã¾ã¨ãããã®ã§ãã
ç®æ¬¡
- 忏ã
- Vim 8.0 Advent Calendar 1 æ¥ç® 颿°æ©è½ã®å¼·å
- Vim 8.0 Advent Calendar 2 æ¥ç® ãã£ã³ãã«
- Vim 8.0 Advent Calendar 3 æ¥ç® ã¸ã§ã
- Vim 8.0 Advent Calendar 4 æ¥ç® JSON ãµãã¼ã
- Vim 8.0 Advent Calendar 5 æ¥ç® ã¿ã¤ãã¼
- Vim 8.0 Advent Calendar 6 æ¥ç® ããã±ã¼ã¸
- Vim 8.0 Advent Calendar 7 æ¥ç® ã¦ã£ã³ã㦠ID
- Vim 8.0 Advent Calendar 8 æ¥ç® defaults.vim
- Vim 8.0 Advent Calendar 9 æ¥ç® 2 鲿°ã®ãµãã¼ã
- Vim 8.0 Advent Calendar 10 æ¥ç® quickfix ã«è¿½å ãããæ©è½
- Vim 8.0 Advent Calendar 11 æ¥ç® ã¿ã¤ã ã¹ã¿ã³ãã§ç®¡çãããããã«ãªã£ã viminfo ãã¡ã¤ã«
- Vim 8.0 Advent Calendar 12 æ¥ç® é£çªã®çæ
- Vim 8.0 Advent Calendar 13 æ¥ç® undo ãåå²ããã«ã«ã¼ã½ã«ãç§»å
- Vim 8.0 Advent Calendar 14 æ¥ç® æ°ãããªãã·ã§ã³ ãã® 1
- Vim 8.0 Advent Calendar 15 æ¥ç® æ°ãããªãã·ã§ã³ ãã® 2
- Vim 8.0 Advent Calendar 16 æ¥ç® æ°ãã Ex ã³ãã³ã
- Vim 8.0 Advent Calendar 17 æ¥ç® æ°ãã颿° ï½æååæä½ç·¨ï½
- Vim 8.0 Advent Calendar 18 æ¥ç® æ°ãã颿° ï½æ å ±åå¾ç·¨ï½
- Vim 8.0 Advent Calendar 19 æ¥ç® æ°ãã颿° ï½ç¹æ®æä½ç·¨ï½
- Vim 8.0 Advent Calendar 20 æ¥ç® æ°ããã¤ãã³ã
- Vim 8.0 Advent Calendar 21 æ¥ç® æ°ããçµã¿è¾¼ã¿å¤æ°
- Vim 8.0 Advent Calendar 22 æ¥ç® æ°ããã¹ã¿ã¤ã«ã®ãã¹ã
- æ°ãããã¹ãã®ãµã³ãã«
- ãã¹ãã®ä»çµã¿
- ã¢ãµã¼ãç³»é¢æ°
- assert_equal({expected}, {actual} [, {msg}])
- assert_notequal({expected}, {actual} [, {msg}])
- assert_inrange({lower}, {upper}, {actual} [, {msg}])
- assert_match({pattern}, {actual} [, {msg}])
- assert_notmatch({pattern}, {actual} [, {msg}])
- assert_true({actual} [, {msg}])
- assert_false({actual} [, {msg}])
- assert_exception({error} [, {msg}])
- assert_fails({cmd} [, {error}])
- ãã®ä»ã®ãã¹ãç¨é¢æ°
- Vim 8.0 Advent Calendar 23 æ¥ç® éå¤ãªå¤æ´
- Vim 8.0 Advent Calendar 24 æ¥ç® å é¨çãªå¤æ´
- Vim 8.0 Advent Calendar 25 æ¥ç® ã¦ã¼ã¶ã¼ããããã¼ã«ãã
忏ã
2016å¹´9æãVim ã®æ°ããã¡ã¸ã£ã¼ãã¼ã¸ã§ã³ã§ãã Vim 8.0 ããªãªã¼ã¹ããã¾ããã ãã®ã¢ããã³ãã«ã¬ã³ãã¼ã§ã¯ Vim 8.0 ã«å«ã¾ããæ°ããæ©è½ã夿´ãªã©ãç´¹ä»ãã¦ããã¾ãã
注æ:
- æ£ç¢ºã«ã¯ Vim 7.4.0 以éã«è¿½å ãããæ©è½ã«ãªãã®ã§ããªãªã¼ã¹ããæéãçµã£ã¦ããæ©è½ãããã¾ãã
- å ¨ã¦ã®æ°æ©è½ãç´¹ä»ãããã®ã§ã¯ããã¾ããã
Vim 8.0 Advent Calendar 1 æ¥ç® 颿°æ©è½ã®å¼·å
Vim 8.0 ã§ã¯ Vim script ã®é¢æ°æ©è½ãå¼·åããã¾ããããã®è¨äºã§ã¯ Partials ã¨ã©ã ããç´¹ä»ãã¾ãã
Partials
ããã¾ã§ã® Vim script ã§ã¯ function() 颿°ã§é¢æ°åç
§(Funcref)ã使ã§ãã¾ãããããã«ããã颿°ã夿°ã«å
¥ããç´æ¥å¼ã³åºããã¨ãã§ãã¾ãã
let Foo = function('strftime') echo Foo('%Y-%m-%d') " => 2016-12-01 echo Foo('%Y-%m-%d', 1482634800) " => 2016-12-25
ããã«å ããfunction() 颿°ã«äºåã«å¼æ°ã渡ããã¨ã§ã弿°é¨åããã¤ã³ããã颿°åç
§ãä½ããããã«ãªãã¾ãããããã Partial ã¨å¼ã³ã¾ãã
let Foo = function('strftime', ['%Y-%m-%d']) echo Foo() " => 2016-12-01 echo Foo(1482634800) " => 2016-12-25
function() ã®ç¬¬2弿°ä»¥éã«è¾æ¸ã渡ããã¨ã§ãself ããã¤ã³ããããã¨ãå¯è½ã§ãã
function! Value() dict return self.value endfunction let dict = {'value': 10} let Foo = function('Value', dict) echo Foo() " => 10
è¾æ¸ããè¾æ¸é¢æ°ã®å¤ãåç §ããã¨ãèªåçã«è¾æ¸ããã¤ã³ããã颿°åç §ãå¾ããã¾ãã
let dict = {'value': 20} function! dict.get_value() dict return self.value endfunction let Foo = dict.get_value echo Foo() " => 20
Partial ããããã¤ã³ããã¦ãã弿°ãè¾æ¸ãå¾ãã«ã¯ get() ã使ãã¾ãã
let dict = {'value': 20} function! AddN(n) dict return a:n + self.value endfunction let Add30 = function('AddN', [30], dict) echo Add30() " => 50 echo get(Add30, 'name') " => AddN echo string(get(Add30, 'func')) " => function('AddN') echo get(Add30, 'dict') " => {'value': 20} echo get(Add30, 'args') " => [30]
ã©ã ã
ããã¾ã§ã¯é¢æ°ãä½ãããã«ã¯ :function Ex ã³ãã³ãã使ã£ã¦ãè¤æ°è¡ã«æ¸¡ã£ã¦ã³ã¼ããæ¸ãå¿
è¦ãããã¾ããã
ãã®ãããsort() ã®ãããªä¸é¨ã®é¢æ°ãåãåã颿°ã®å®è£
ãé¢åã§ããã
function! MyCompare(i1, i2) return a:i1 - a:i2 endfunction echo sort([3, 5, 4, 1, 2], 'MyCompare') " => [1, 2, 3, 4, 5]
ããã§æ°ããã©ã ãæ§æã追å ããã¾ããã{args -> expr} ã¨ããå½¢å¼ã§ãæ¬æã«ã¯å¼ã®ã¿ãæ¸ãã¾ãã
echo sort([3, 5, 4, 1, 2], { i1, i2 -> i1 - i2 }) " => [1, 2, 3, 4, 5]
ã¾ããmap() 㨠filter() ã¯ä»ã¾ã§æååã§å¼ã渡ãã¦ãã¾ãããã颿°åç
§ã渡ããããã«ãªãã¾ããã
ãããã®é¢æ°ã¯ãé
åã®æ·»åã® {index} ãããã¯è¾æ¸ã®ãã¼ {key} ã¨ãåè¦ç´ ã®å¤ã§ãã {val} ã® 2 ã¤ã弿°ã«åãã¾ããééããããã®ã§æ³¨æãã¦ãã ããã
echo map(range(10), { index, val -> val * 2 }) " => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
substitute() 颿°ãåæ§ã« {sub} ã«é¢æ°ã渡ããããã«ãªãã¾ãããæ¸¡ãã颿°ã¯ã弿°ã¨ãã¦ããããã対象ãé
åã§åãåãã¾ããé
åã® 0 çªç®ã¯ããããã対象ã®å
¨ä½ã1 çªç®ä»¥éã¯ãã¿ã¼ã³å
ã®ã°ã«ã¼ãã§ãã
echo substitute('char count sample', '\w\+', { m -> m[0] . '(' . len(m[0]) . ')' }, 'g') " => char(4) count(5) sample(6)
ã¯ãã¼ã¸ã£
颿°å
ã§æ´ã«é¢æ°ãå®ç¾©ããéã«ãã¯ãã¼ã¸ã£ãä½ããããã«ãªãã¾ãããããã¯ã©ããããã¨ãã¨è¨ãã¨ããã¹ããã颿°ã®å
å´ãããå¤å´ã®é¢æ°ã®ãã¼ã«ã«ã¹ã³ã¼ããåç
§ã§ããã¨ãããã¨ã§ãã
ã¯ãã¼ã¸ã£ã使ãã«ã¯ :function Ex ã³ãã³ãã« closure ãã©ã°ã渡ãã¾ãã
function! Counter() let c = 0 function! s:count() closure let c += 1 return c endfunction return funcref('s:count') endfunction let C1 = Counter() let C2 = Counter() echo C1() " => 1 echo C2() " => 1 echo C1() " => 2 echo C2() " => 2
颿°ã®ã¹ã³ã¼ãã«æ³¨æãã¦ãã ããã颿°å ã§ãããã¨ãã颿°èªä½ã®ã¹ã³ã¼ãã¯é¢æ°ãã¼ã«ã«ã«ã¯ãªãã¾ãããã°ãã¼ãã«é¢æ°ãå®ç¾©ããã°ãããã¯ã°ãã¼ãã«é¢æ°ã«ãªãã¾ããæããããã¯æ´å²çãªçç±ã«ãããã®ã ã¨æããã¾ãã
ãããã¯ã©ã ãã使ããã¨ã§ãã¯ãã¼ã¸ã£ã使ã§ãã¾ããã©ã ãã使ãå ´åãã©ã ãå
ã®å¼ãéçã«ãã¼ã¹ããã¦ãå¤å´ã®å¤æ°ãåç
§ãã¦ããå ´åã«ã¯ãã¼ã¸ã£ã¨å¤å®ããã¾ãããã£ã¦ãä¾ãã° :execute ã eval() ãªã©ã§åçã«åç
§ãããã ãã®å ´åãã¯ãã¼ã¸ã£ã«ã¯ãªããå¤å´ã®å¤æ°ã¯åç
§ã§ãã¾ããã
function! OuterFunc(arg) let var = 0 " ããã¯ã¯ãã¼ã¸ã£ã«ãªãã¾ãã let closure = { -> var } " ããã¯ã¯ãã¼ã¸ã£ã«ã¯ãªãã¾ããã let not_closure = { -> eval('var') } " ãã㯠a:arg ã®åç §ã«ããã¯ãã¼ã¸ã£ã«ãªããvar ãåç §ã§ãã¾ãã let closure = { -> [a:arg, eval('var')][-1] } endfunction
2種é¡ã®é¢æ°åç §
颿°åç
§ã¯ function() 颿°ã§çæã§ãã¾ãããããã«ãã£ã¦çæããã颿°åç
§ã¯åååç
§ã«ãªãã¾ããããã¯ã¤ã¾ãã颿°ãååã§åå®ç¾©ãããå ´åãåç
§å
ã®é¢æ°ãæ°ãã颿°ã«ãªã£ã¦ãã¾ãã¨ãããã¨ã§ãã
䏿¹ã§å
ã»ã©ã®ã¯ãã¼ã¸ã£ã¯ä½åº¦ãåå®ç¾©ããããã¨ãå¤ããåé¡ã«ãªãå ´åãããã¾ããããã§ã颿°ã䏿¸ãããã¦ãå
ã®å¤ãåç
§ãç¶ããæ°ããåç
§ãä½ãããã«ãfuncref() 颿°ã追å ããã¾ããã
funcref() 颿°ã®å¼æ°ã¯ function() 颿°ã¨å
¨ãåãã§ãPartial ã使å¯è½ã§ããéãã¯ãfuncref() å¼ã³åºãæç¹ã§ã®é¢æ°èªä½ã¸ã®åç
§ãå¾ãããç¹ã§ããããã«ããåç
§å
ã®é¢æ°ãå¾ã§ä¸æ¸ãããã¦ããå
ã®é¢æ°ãåç
§ãç¶ãããã¨ãã§ãã¾ãã
注æç¹ã¨ãã¦ãçµã¿è¾¼ã¿é¢æ°ã«å¯¾ãã¦ã¯ä½¿ãã¾ãããçµã¿è¾¼ã¿é¢æ°ã®é¢æ°åç
§ãä½ãå ´åã«ã¯ function() ã使ãå¿
è¦ãããã¾ãã
Vim 8.0 Advent Calendar 2 æ¥ç® ãã£ã³ãã«
Vim 8.0 ã§ã¯ãå¤é¨ãªã½ã¼ã¹ã¨ã®ããã¨ããè¡ãæ©è½ã¨ãã¦ãã£ã³ãã«ã追å ããã¾ããã æ¬è¨äºã§ã¯ããã£ã³ãã«ã®åºæ¬çãªä½¿ãæ¹ã¨ãã¦ãã½ã±ããéä¿¡ãè¡ãæ¹æ³ã«ã¤ãã¦ç°¡åã«èª¬æãã¾ãã 詳細ã«ã¤ãã¦ã¯ Vim ä»å±ã® help ãåç §ãã¦ãã ããã
ãã£ã³ãã«ã使ã
ãã®ä¾ã§ã¯ããã¼ã«ã«ãã¹ãã® HTTP ãµã¼ãã«å¯¾ã㦠ch_sendraw() 颿°ã使ã£ã¦ãªã¯ã¨ã¹ããéããçµæããã³ãã©ã§åãåã£ã¦è¡¨ç¤ºãã¦ãã¾ãã
" ãªã¢ã¼ãããã®ã¬ã¹ãã³ã¹ããã£ãéã«å¼ã°ãããã³ãã©é¢æ°ãå®ç¾©ãã¾ã function! s:handle(ch, msg) abort " ã¬ã¹ãã³ã¹ã表示ãã¾ããå®éã«ã¯ã¿ã¤ãã³ã°æ¬¡ç¬¬ã§ã¯ã¬ã¹ãã³ã¹ãåå²ãããå¯è½æ§ãããå¾ã¾ã echo a:msg " ch_close() 颿°ã§ãã£ã³ãã«ãéãããã¨ãã§ãã¾ã " ãªã¢ã¼ãããåæãããå ´åã¯èªåçã«éãããã¾ã if ch_status(a:ch) !=# 'closed' call ch_close(a:ch) endif echo ch_status(s:ch) " => closed endfunction " ãã£ã³ãã«ãéãéã«æ¸¡ããªãã·ã§ã³ãç¨æãã¾ã " ããã§ã¯ã¢ã¼ãã "raw"ãã³ã¼ã«ããã¯ã«å ã»ã©å®ç¾©ãããã³ãã©é¢æ°ã®åç §ãæå®ãã¦ãã¾ã let s:options = {'mode': 'raw', 'callback': function('s:handle')} " ch_open() ã§ãã£ã³ãã«ãéãã¾ã let s:ch = ch_open('localhost:80', s:options) " ããã§ s:ch 夿°ã¯ channel åã®å¤ã«ãªãã¾ããchannel åã¯ããã£ã³ãã«æ©è½ã®ããã«æ°ãã追å ãããåã§ã echo ch_status(s:ch) " => open " çã® HTTP ãå©ãã¾ã call ch_sendraw(s:ch, "GET / HTTP/1.0\r\n\r\n")
ããã§ãs:handle() 颿°ã¯éåæã«å¼ã³åºããã¾ããã¤ã¾ãããµã¼ãããã®ã¬ã¹ãã³ã¹ãããã¾ã§ã®éãã¦ã¼ã¶ã¼ã¯ç·¨éãç¶ãããã¨ãã§ãã¾ãã
ãã ãããã«ãã¹ã¬ããã§ã¯ãªãç¹ã«æ³¨æãã¦ãã ãããs:handle() ãå¼ã³åºãããå®è¡ããã¦ããéã¯ã¦ã¼ã¶ã¼ã¯ Vim ã®æä½ãã§ãã¾ãããéãå¦çã¯ããªãããã«æ³¨æãå¿
è¦ã§ãã
ãã£ã³ãã«ã®ã¢ã¼ã
å ã»ã©ã®ä¾ã§ã¯ raw ã¢ã¼ãã§ãã£ã³ãã«ã使ç¨ãã¾ããããã£ã³ãã«ã«ã¯ä»ã«ãå¤ãã®ã¡ãã»ã¼ã¸ã®éä¿¡/åä¿¡ã®æ¹æ³ãããã¾ãã
ãã£ã³ãã«ã§è¡ãéä¿¡ã«ã¯ 4 ã¤ã®ã¢ã¼ããããã¾ããã¢ã¼ãã«ãã£ã¦ Vim ã¯ã¡ãã»ã¼ã¸ãè§£éããã³ã¼ã«ããã¯ãã¡ãã»ã¼ã¸åä½ã§å¼ã³åºãã¦ãããããã¡ãã»ã¼ã¸ã®ã¨ã³ã³ã¼ã/ãã³ã¼ããè¡ã£ã¦ããã¾ãã
JSON JSON åä½ã§ã¡ãã»ã¼ã¸ãããã¨ããã¾ãã ã¡ãã»ã¼ã¸ã«ã¯ JSON ã Vim ã®ãªãã¸ã§ã¯ãã«å¤æãããã®ã渡ããã¾ãã
JS JSON ã«ä¼¼ã¦ãã¾ãããJavaScript ã®ãªãã¸ã§ã¯ãã使ã£ã¦ã¡ãã»ã¼ã¸ãããã¨ããã¾ãã ãªãã¸ã§ã¯ãã®ãã¼ã®
""ãçç¥ãããããé åã«ç©ºã®è¦ç´ ã許å¯ãããããªã©ã®éããããã¾ããNL è¡åä½ã§ã¡ãã»ã¼ã¸ãããã¨ããã¾ãã ã¡ãã»ã¼ã¸ã«ã¯æ«å°¾ã®æ¹è¡ãåãé¤ãããã®ã渡ããã¾ãã
RAW Vim ã¯ã¡ãã»ã¼ã¸ãè§£éãã¾ããããã®ã¾ã¾ã®ãã¼ã¿ã使ããã¾ãã
ãã®ä»ã®ã¡ãã»ã¼ã¸ã®èªã¿æ¸ãã®æ¹æ³
ä¾ã§ã¯ ch_sendraw() ã¨ããã³ãã©ã使ã£ãèªã¿æ¸ããè¡ãã¾ãããä»ã«ãããã¤ãç´¹ä»ãã¾ãã
ch_sendexpr() ch_sendraw()
ãã£ã³ãã«ã«å¯¾ãã¦ã¡ãã»ã¼ã¸ãéãã¾ãã
JSON ã¢ã¼ãã JS ã¢ã¼ãã®é㯠ch_sendexpr() ã使ããVim ã®ãªãã¸ã§ã¯ããæ¸¡ããã¨ã§ã¨ã³ã³ã¼ããããå¤ãéããã¾ãã
NL ã¢ã¼ãã RAW ã¢ã¼ãã®é㯠ch_sendraw() ã使ããæååãæ¸¡ããã¨ã§çã®ãã¼ã¿ãéãã¾ãã
ch_read() ch_readraw()
ãã£ã³ãã«ã®ãããã¡ã«ããã¡ãã»ã¼ã¸ãèªã¿ã¾ããèªã¿ã¨ã£ãã¡ãã»ã¼ã¸ã¯ãããã¡ããåãé¤ããã¾ããã¾ãããã³ãã©ã«å¦çãããã¡ãã»ã¼ã¸ããããã¡ãããã§ã«ãªããããèªãã¾ããã
JSON ã¢ã¼ãã JS ã¢ã¼ãã®é㯠ch_read() ã使ãããã³ã¼ããããå¤ãå¾ããã¾ãã
NL ã¢ã¼ãã RAW ã¢ã¼ãã®é㯠ch_readraw() ã使ããçã®ãã¼ã¿ãå¾ããã¾ããNL ã¢ã¼ãã®å ´åã¯ãæ¹è¡åä½ã§ã¡ãã»ã¼ã¸ãèªã¿åãã¾ãã
ch_evalexpr() ch_evalraw()
ãã£ã³ãã«ã«å¯¾ãã¦ã¡ãã»ã¼ã¸ãéãããã®ã¬ã¹ãã³ã¹ãå¾ ã£ã¦ãã¬ã¹ãã³ã¹ãè¿ãã¾ããsend 㨠read ãä¸åº¦ã«ãããã®ã§ãã使ãåãã«ã¤ãã¦ãåè¿°ã®ãã®ã¨åãã§ãã
JSON/JS |
NL/RAW |
|
|---|---|---|
| éä¿¡ | ch_sendexpr() |
ch_sendraw() |
| åä¿¡ | ch_read() |
ch_readraw() |
| éåä¿¡ | ch_evalexpr() |
ch_evalraw() |
ãã£ã³ãã«ã«ã¯ä»ã«ãã¾ã ã¾ã æ©è½ããªãã·ã§ã³ãããã¾ãã詳細㯠:help channel ãåç
§ãã¦ã¿ã¦ãã ããã
Vim 8.0 Advent Calendar 3 æ¥ç® ã¸ã§ã
ã¸ã§ãæ©è½ã使ããã¨ã§ãå¤é¨ããã»ã¹ãéåæã§å®è¡ãããã¨ãã§ãã¾ãã
ã¸ã§ãã使ã
ãã®ä¾ã§ã¯ãã¸ã§ãã使ã£ã¦å¤é¨ã³ãã³ã git grep -n word ãå®è¡ããçµæã 1 è¡ãã¤éåæã§å¦çããquickfix ã«è¿½å ãã¦ãã¾ãã
function! s:handler(ch, msg) abort caddexpr a:msg cwindow endfunction call setqflist([]) let s:job = job_start( \ ['git', 'grep', '-n', 'word'], \ {'out_cb': function('s:handler')})
ãã®ããã«ãã¸ã§ãã使ããã¨ã§å¤é¨ããã»ã¹ãããã¯ã°ã©ã¦ã³ãã§å®è¡ãããã£ã³ãã«ã¨ã³ã¼ã«ããã¯é¢æ°ã使ããã¨ã§çµæãéåæã«å¦çã§ãã¾ããå¦çã«æéã®ãããã½ã¼ã¹ã³ã¼ãã®ãã§ãã¯å¦çãªã©ãè£ã§å®è¡ããçµæãåºãã表示ããã¨ãã£ããã¨ãå¯è½ã«ãªãã¾ãã
ã¸ã§ãã®ãªãã·ã§ã³
ã¸ã§ãã§æå®ã§ãããªãã·ã§ã³ã«ã¤ãã¦ç°¡åã«ç´¹ä»ãã¾ããããã§ç´¹ä»ãã¦ãããã®ãå ¨ã¦ã§ã¯ããã¾ããã詳細ã«ã¤ãã¦ã¯ help ãåç §ãã¦ãã ããã
let job_options = {}
ã¢ã¼ã
ã¸ã§ãã¨æ¥ç¶ããããæ¨æºå
¥åãæ¨æºåºåãæ¨æºã¨ã©ã¼åºåã®åãã£ã³ãã«ã®ã¢ã¼ããæå®ãã¾ããããã©ã«ã㯠nl ã§ãæ¹è¡ã 1 ã¤ã®ã¡ãã»ã¼ã¸ã¨ãã¾ãã
" æ¨æºå ¥åã®ã¢ã¼ãã§ãã let job_options.in_mode = 'nl' " æ¨æºåºåã®ã¢ã¼ãã§ãã let job_options.out_mode = 'nl' " æ¨æºã¨ã©ã¼åºåã®ã¢ã¼ãã§ãã let job_options.err_mode = 'nl'
æ¨æºå ¥åºåã®æ¥ç¶å
æ¨æºå ¥åºåã«ã¤ãã¦ã®ç´°ããæå®ãè¡ãã¾ãã
" æ¨æºå ¥åã使ãã¾ããã let job_options.in_io = 'null' " æ¨æºå ¥åããã£ã³ãã«ã«æ¥ç¶ãã¾ããããã©ã«ãã§ãã let job_options.in_io = 'pipe' " æ¨æºå ¥åããã¡ã¤ã«ããèªã¿è¾¼ã¿ã¾ãã let job_options.in_io = 'file' " æ¨æºå ¥åããã¡ã¤ã«ããèªã¿è¾¼ãéã®ãã¡ã¤ã«ã¸ã®ãã¹ã§ãã let job_options.in_name = '/path/file' " æ¨æºå ¥åããããã¡ããèªã¿è¾¼ã¿ã¾ãã let job_options.in_io = 'buffer' " æ¨æºå ¥åããããã¡ããèªã¿åãéã®èªã¿åããããã¡ã®ãããã¡çªå·ã§ãã let job_options.in_buf = 1 " æ¨æºå ¥åããããã¡ããèªã¿åãéã®ãããã¡ã®èªã¿åãç¯å²ã®å é è¡ã§ããããã©ã«ã㯠1 ã§ãã let job_options.in_top = 1 " æ¨æºå ¥åããããã¡ããèªã¿åãéã®ãããã¡ã®èªã¿åãç¯å²ã®æçµè¡ã§ããããã©ã«ãã¯ãããã¡ã®æçµè¡ã§ãã let job_options.in_bot = 9999 " 注æ: æçµè¡ã«ãããå ´åã¯ãã®å¤ã¯æå®ãã¦ã¯ããã¾ããã " æ¨æºåºåã使ãã¾ããã let job_options.out_io = 'null' " æ¨æºåºåããã£ã³ãã«ã«æ¥ç¶ãã¾ããããã©ã«ãã§ãã let job_options.out_io = 'pipe' " æ¨æºåºåããã¡ã¤ã«ã«åºåãã¾ãã let job_options.out_io = 'file' " æ¨æºåºåããã¡ã¤ã«ã«åºåããéã®ãã¡ã¤ã«ã¸ã®ãã¹ã§ãã let job_options.out_name = '/path/file' " æ¨æºåºåããããã¡ã«åºåãã¾ãã let job_options.out_io = 'buffer' " æ¨æºåºåããããã¡ã«åºåããéã®ãããã¡çªå·ã§ãã " æå®ããªãå ´åããåå¨ããªããããã¡ã ã£ãå ´åã¯ãæ°ãããããã¡ã使ããã¾ãã let job_options.out_buf = 1 " åºåå ããããã¡ã®å ´åã« 0 ãæå®ããã¨ãåºåå ãããã¡ã® 'modifiable' ãªãã·ã§ã³ããªãã«ãã¾ãã " åºåã¯è¡ããã¾ãããã¦ã¼ã¶ã¼ã¯ãããã¡ã夿´ã§ããªããªãã¾ãã let job_options.out_modifiable = 0 " åºåå ããããã¡ã®å ´åã« 1 ãæå®ããã¨ãæ°ããä½ããããããã¡ã® 1 è¡ç®ã«ã¡ãã»ã¼ã¸ãåºåãã¾ãã " ã¡ãã»ã¼ã¸ã¯ "Reading from channel output..." ã®ãããªãã®ã§ãã let job_options.out_msg = 1
æ¨æºã¨ã©ã¼åºåã¯ãæ¨æºåºåã®ãªãã·ã§ã³ã®ãã¼ã® out ã err ã«å¤ãããã®ãåãããã«ç¨æããã¦ãã¾ãã
ã³ã¼ã«ããã¯
ã¸ã§ãå´ã§ä½ããèµ·ããéã«å¼ã³åºããã颿°ãæå®ãã¾ããæå®ããªãå ´åã¯ç¹ã«ä½ãå¼ã³åºããã¾ããã
" æ¨æºåºåãããã¯æ¨æºã¨ã©ã¼åºåããä½ãèªã¿åºããããã«ãªã£ãéã«å¼ã³åºããã¾ãã " ä¸è¨ 2 ã¤ã¨ã¯ä½µç¨ã§ãã¾ããã let job_options.callback = { ch, msg => [] } " æ¨æºåºåããä½ãèªã¿åºããããã«ãªã£ãéã«å¼ã³åºããã¾ãã let job_options.out_cb = { ch, msg => [] } " æ¨æºã¨ã©ã¼åºåããä½ãèªã¿åºããããã«ãªã£ãéã«å¼ã³åºããã¾ãã let job_options.err_cb = { ch, msg => [] } " ãã£ã³ãã«ãéããããéã«å¼ã³åºããã¾ãã let job_options.close_cb = { ch => [] } " ã¸ã§ã(å¤é¨ããã»ã¹)ãçµäºããéã«å¼ã³åºããã¾ãã let job_options.exit_cb = { job, exit_status => [] }
ãã®ä»
" ch_evalexpr() ãªã©ã§ãã¼ã¿ãèªã¿åãéã®ã¿ã¤ã ã¢ã¦ãæé(ããªç§)ã§ãã let job_options.timeout = 2000 " æ¨æºåºåãèªã¿åãéã®ã¿ã¤ã ã¢ã¦ãæé(ããªç§)ã§ãã"timeout" ã䏿¸ããã¾ãã let job_options.out_timeout = 2000 " æ¨æºã¨ã©ã¼åºåãèªã¿åãéã®ã¿ã¤ã ã¢ã¦ãæé(ããªç§)ã§ãã"timeout" ã䏿¸ããã¾ãã let job_options.err_timeout = 2000 " Vim çµäºæã«ãã¸ã§ãã«å¯¾ã㦠job_stop() ãå¼ã³åºãã¾ãã " ããã©ã«ã㯠'term' ã§ãVim çµäºæã«ã¸ã§ãã忢ãã¾ãã " 空æååãæå®ããã¨ãä½ããã¾ããã let job_options.stoponexit = 'term'
ã¸ã§ããå¶å¾¡ãã
ã¸ã§ãã忢ãã
job_stop() 颿°ã§ã¸ã§ããçµäºããããã¨ãã§ãã¾ããå®éã«ã¯ã·ã°ãã«ãéä¿¡ããããã¾ãã
å®éã«ä½ãèµ·ããã㯠OS ä¾åã§ãã
" ã¸ã§ãã忢ãã¾ãã " 第2弿°ã«ã¯ä»ã« 'hup' 'quit' 'int' 'kill' ããã·ã°ãã«ã®æ°å¤ãªã©ãæå®ã§ãã¾ãã " çç¥æã¯ 'term' ã«ãªãã¾ãã call job_stop(job, 'term')
ã¸ã§ãã®ç¶æ ãæ å ±ãå¾ã
job_status() 颿°ã job_info() 颿°ã§ãã¸ã§ãã®ç¶æ
ãæ
å ±ãåå¾ã§ãã¾ãã
echo job_status(job) " => 'run' (ã¸ã§ããå®è¡ä¸ã®å ´å) " => 'fail' (ã¸ã§ãã®éå§ã«å¤±æããå ´å) " => 'dead' (ã¸ã§ãã®å®è¡ãçµäºãã¦ããå ´å) " ã¸ã§ãã«ç´ä»ãããããã£ã³ãã«ã§ãã let ch = job_getchannel(job) " æ§ã ãªæ å ±ãè¾æ¸ã§åå¾ãã¾ãã echo job_info(job) " 'status' job_status() ã®æ»ãå¤ã¨åãã§ãã " 'channel' job_getchannel() ã®æ»ãå¤ã¨åãã§ãã " 'exitval' çµäºã³ã¼ãã§ãã'status' ã 'dead' ã®å ´åã®ã¿åç §ã§ãã¾ãã " 'exit_cb' exit_cb ãªãã·ã§ã³ã«æå®ããã颿°åç §ã®å¤ã§ãã " 'stoponexit' stoponexit ãªãã·ã§ã³ã®å¤ã§ãã
Vim 8.0 Advent Calendar 4 æ¥ç® JSON ãµãã¼ã
ãã£ã³ãã«ãã¸ã§ãã追å ãããã®ã«åããã¦ãå¤é¨ã¨ JSON ã§ã®ããåããè¡ããã¨ãæ³å®ãã¦ãJSON ãµãã¼ãã追å ããã¾ããã
ã¨ã³ã³ã¼ã/ãã³ã¼ããã
json_encode() 㨠json_decode() ã使ããã¨ã§ãVim ã®å
é¨ãã¼ã¿ã¨ JSON æååãç¸äºã«å¤æã§ãã¾ãã
let obj = {'users': [{'name': 'thinca', 'lang': 'vim'}]} let json = json_encode(obj) echo json " => {"users":[{"lang":"vim","name":"thinca"}]} echo json_decode(json) " => {'users': [{'lang': 'vim', 'name': 'thinca'}]}
追å ãããå¤
Vim script ã«ã¯ãtrue/false ãªã©ã® bool å¤ããnull ãªã©ã®å¤ã¯åå¨ãã¾ããã§ããã
ãã®ã¾ã¾ã 㨠JSON ã¨ç¸äºã«å¤æããã®ã«æ¯éãåºããããæ°ãããããã表ãå¤ã追å ããã¾ããã
v:falsev:truev:nullv:none
ãããã«ãã£ã¦ãbool å¤ã null ãå«ã JSON ãæ£ããç¸äºå¤æããã¾ãã
let json = '{"is_vimmer":true,"has_free_time":false,"future":null}' let obj = json_decode(json) echo obj " => {'future': v:null, 'is_vimmer': v:true, 'has_free_time': v:false} echo json_encode(obj) " => {"future":null,"is_vimmer":true,"has_free_time":false}
js_encode() js_decode()
ãã£ã³ãã«ã«ã¯ JSON ã¢ã¼ãã®ä»ã« JS ã¢ã¼ããããã¾ããããããã«å¯¾å¿ãã js_encode() js_decode() ãããã¾ããããã㯠JavaScript ã®ãªãã¸ã§ã¯ãã®ãããªå½¢å¼ãæ±ãã¾ãã
let js = '{vimmers:["thinca",,],}' let obj = js_decode(js) echo obj " => {'vimmers': ['thinca', v:none]} echo js_encode(obj) " => {vimmers:["thinca",,]}
- ãªãã¸ã§ã¯ãã®ãã¼ã¯å¿ è¦ããªããã°ããã«ã¯ã©ã¼ãã§å²ããã¾ããã
- æ«å°¾ã«ã³ãã許容ãã¾ãã
- é
åå
ã®ç©ºã®è¦ç´ (é£ç¶ããã«ã³ã)ã許容ãããã®å ´åã¯
v:noneã使ããã¾ãã
ããªãç¹æ®ãªå¤ã«ãªãã®ã§ãé常㯠JSON ã使ãã°ããã§ãããã
Vim 8.0 Advent Calendar 5 æ¥ç® ã¿ã¤ãã¼
Vim 8.0 ã¯æ°ããã¿ã¤ãã¼æ©è½ã追å ããã¾ãããããã«ãããæå®æéå¾ã«é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ãã
ã¿ã¤ãã¼ãéå§ãã
以ä¸ã®ä¾ã§ã¯ 1 ç§æ¯ã«é¢æ°ãå¼ã³åºãããã®åº¦ã«ã«ã¦ã³ããã¦ã³ãè¡ããæå¾ã« BOMB! ã¨è¡¨ç¤ºãã¦çµäºãã¾ãã
let dict = {'count': 10} function! dict.countdown(timer) abort let self.count -= 1 if self.count echo self.count else echo 'BOMB!' call timer_stop(a:timer) endif endfunction let timer = timer_start(1000, dict.countdown, {'repeat': -1})
ã¿ã¤ãã¼ãèµ·åããå¾ãã¿ã¤ãã¼ã«ãã£ã¦é¢æ°ãå®è¡ããã¦ããé以å¤ã¯ãã¦ã¼ã¶ã¼ã¯ç·¨éãç¶ãããã¨ãã§ãã¾ãã ä¾ã«ãã£ã¦ Vim ã¯ã·ã³ã°ã«ã¹ã¬ããã§ãã®ã§ãã¿ã¤ãã¼ã«ãã£ã¦ Vim script ãå®è¡ããã¦ããéã¯ã¦ã¼ã¶ã¼ã¯æä½ãã§ãã¾ããã
颿°ã®è§£èª¬
timer_start({time}, {callback}, [, {options}])
ã¿ã¤ãã¼ãéå§ãã¾ãã{time} ããªç§å¾ã« {callback} 颿°ãå¼ã³åºãã¾ãã
颿°ã¯ã¿ã¤ãã¼ ID ãè¿ãã¾ãããã® ID ã使ã£ã¦ã¿ã¤ãã¼ã®æä½ãã§ãã¾ããã¾ãã{callback} 颿°ã弿°ã«ãã® ID ãåãåãã¾ãã
{options} ã«ã¯è¾æ¸ã§ãªãã·ã§ã³ã渡ãã¾ããä»ã®ã¨ããæå¹ãªãªãã·ã§ã³ã¯ä»¥ä¸ã®ãã®ã§ãã
- "repeat"
{callback}ãç¹°ãè¿ãå¼ã³åºãåæ°ãæå®ãã¾ãã æ£æ°ãæå®ããã¨ã{time} ããªç§æ¯ã«æå®ããåæ°ã ã{callback}ãå¼ã³åºããã¾ãã -1 ãæå®ããã¨ãå¶éãªãå¼ã³åºããç¶ãã¾ãã æå®ããªãã£ãå ´å㯠1 åã ãå¼ã³åºããã¾ãã
timer_stop({timer})
æå®ããã¿ã¤ãã¼ã忢ãã¾ãã{callback} 颿°ã¯å¼ã³åºãããªããªãã¾ãã
timer_pause({timer}, {paused})
ã¿ã¤ãã¼ã䏿忢ãããåéããããã¾ãã{paused} ã TRUE ã®å ´åã¯ä¸æåæ¢ãFALSE ã®å ´åã¯åéã«ãªãã¾ãã
timer_info([{timer}])
ã¿ã¤ãã¼ã®æ
å ±ãè¿ãã¾ãã{timer} 弿°ã渡ãã¨æå®ããã¿ã¤ãã¼ã®æ
å ±ãã弿°ãçç¥ããå ´åã¯å
¨ã¦ã®ã¿ã¤ãã¼ã®æ
å ±ãé
åã§è¿ãã¾ãã
æ
å ±ã¯è¾æ¸ã§ãID ãæ®ãæéãå¼ã³åºããã颿°ãªã©ä¸éãã®æ
å ±ãå¾ããã¾ãã
timer_stopall()
ã¿ã¤ãã¼ã¯ä¸æ©ééããã¨æ´çºããä¸åã®æä½ãã§ããªããªããããªäºæ
ãèµ·ãå¾ã¾ããtimer_stopall() ãå¼ã³åºããã¨ã§ãå
¨ã¦ã®ã¿ã¤ãã¼ã忢ãããã¨ãã§ãã¾ãã
Vim 8.0 Advent Calendar 6 æ¥ç® ããã±ã¼ã¸
Vim ã®ããã±ã¼ã¸æ©è½ã使ããã¨ã§ãç°¡åãªãã©ã°ã¤ã³ã®ç®¡çãè¡ããã¨ãã§ãã¾ãã
ããã±ã¼ã¸ã¨ã¯
ã¾ããããã±ã¼ã¸æ©è½ã«ãããããã±ã¼ã¸ã¨ã¯ã©ããªãã®ãã«ã¤ãã¦èª¬æãã¾ãã 1 ã¤ã®ããã±ã¼ã¸ã¯ãè¤æ°ã®ãã©ã°ã¤ã³ãå«ãã§ãã¾ããã¾ãããã©ã°ã¤ã³ã¯ãããããVim èµ·åæã«èªã¿è¾¼ã¾ãããããã¨ããæå®ãã¦èªã¿è¾¼ã¾ãããã«åãããã¾ãã ããã±ã¼ã¸ã¯ä»¥ä¸ã®ãããªãã£ã¬ã¯ããªæ§é ã«ãªã£ã¦ãã¾ãã
package/ |- start/ | |- plugin1/ | |- plugin2/ | `- plugin3/ `- opt/ |- plugin4/ |- plugin5/ `- plugin6/
start/ ãã£ã¬ã¯ããªä»¥ä¸ã«ãããã®ã Vim èµ·åæã«èªã¿è¾¼ã¾ãããã©ã°ã¤ã³ã§ãopt/ ãã£ã¬ã¯ããªä»¥ä¸ã«ãããã®ããã¨ããæå®ãã¦èªã¿è¾¼ã¾ãããã©ã°ã¤ã³ã§ãã
plugin1 plugin2 ãªã©ããã©ã°ã¤ã³åã«ãªãã¾ãããã®ååã¯å¾ããèªã¿è¾¼ãéã«æå®ããååã«ãªãã¾ãã
ããã±ã¼ã¸ãé ç½®ãã
ããã±ã¼ã¸ã¯ã'packpath' ãªãã·ã§ã³ã§æå®ããããã£ã¬ã¯ããªã®ä¸ã® pack/ ãã£ã¬ã¯ããªå
ããæ¢ããã¾ãã
'packpath' ã®åæå¤ã¯ 'runtimepath' ã®åæå¤ã¨åãã§ãã
å
·ä½ä¾ãæãã¦è¦ã¦ããã¾ãã
~/.vim ãªã©ã 'packpath' ã® 1 ã¤ã¨ãã¦ç»é²ããã¦ãã¾ãã
ãã®ä¸ã® pack/ ãã£ã¬ã¯ããªå
ã®ãããã±ã¼ã¸åã®ãã£ã¬ã¯ããªã«ããã±ã¼ã¸ãé
ç½®ãã¾ãã
ã¤ã¾ããããã±ã¼ã¸åã pack1ãpack2 ã¨ããã¨ã以ä¸ã®ããã«ãªãã¾ãã
~/.vim/ |- pack/ | |- pack1/ | | |- start/ | | `- opt/ | |- pack2/ | | |- start/ | | `- opt/ : :
ãã®ããã«ããã±ã¼ã¸ãããã³ãã®ä¸ã®ãã©ã°ã¤ã³ãé
ç½®ãã¦ãããã¨ã§ãVim ã¯èµ·åæãvimrc ãã¼ãå¾ã®ãã©ã°ã¤ã³èªã¿è¾¼ã¿åã«ãåããã±ã¼ã¸ã® start/ ãã£ã¬ã¯ããªå
ã®ãã©ã°ã¤ã³ã 'runtimepath' ã«èªåçã«è¿½å ãããã®å¾ãã©ã°ã¤ã³ãèªã¿è¾¼ã¿ã¾ãã
ãªãã·ã§ãã«ãªãã©ã°ã¤ã³ã®ãã¼ã
opt/ 以ä¸ã®ãã©ã°ã¤ã³ã¯ã:packadd Ex ã³ãã³ãã使ããã¨ã§ãã¼ãã§ãã¾ãã
:packadd plugin4
ãã©ã°ã¤ã³å(=ãã©ã°ã¤ã³ã®ãã£ã¬ã¯ããªå)ãæå®ãããã¨ã§ãæªãã¼ãã ã£ãå ´åã¯ãã¼ãããã¾ãããã©ã°ã¤ã³ã¯ 'runtimepath' ã«è¿½å ããããã©ã°ã¤ã³å
ã® plugin/**/*.vim ãã¡ã¤ã«ããã¼ãããã¾ãã
ã¾ããvimrc å
ãããã¼ãããå ´å㯠:packadd! ã使ãã¾ãã! ãä»ããã¨ã'runtimepath' ã¸ã®è¿½å ã®ã¿ãè¡ããããã¼ãã¯ã¹ãããããã¾ããvimrc å
ã®å ´åããã®å¾ã§å¥éãã¼ãå¦çãããããããã®å ´ã§ã¯ãã¼ãããªãããã«ãã¡ãã使ç¨ãã¾ãã
ããã±ã¼ã¸ã®ç¨éã«ã¤ãã¦
ããã±ã¼ã¸ã¯ Vim ã«æ¨æºã§å ¥ã£ãç°¡æãã©ã°ã¤ã³ç®¡çã·ã¹ãã ã§ããæ¨æºã§ãããã¨ãå¼·ã¿ã§ãããããã¾ãå¤ãã®ãã©ã°ã¤ã³ã使ã£ã¦ããªã人ãªã©ã¯ããã®æ©è½ã§ååãªäººãããã§ãããã ã¾ããããã±ã¼ã¸ã¯è¦ãéãã ã¨ãããã±ã¼ã¸åä½ã§ã®ãã©ã°ã¤ã³ã®é å¸ãªã©ãæ³å®ããã¦ãããã§ãããã£ã¹ããªãã¥ã¼ã·ã§ã³ãªã©ã§ã®é å¸ããé¢é£ãããã©ã°ã¤ã³ãã¾ã¨ãããã®ãããã±ã¼ã¸ã«ããç¨éãèãããã¾ãã
䏿¹ã§ãããã±ã¼ã¸æ©è½ã¯ãã¼ãå¨ãã®ä¸è©±ã¯ãã¦ããã¾ãããæ¨ä»ã®ãã©ã°ã¤ã³ããã¼ã¸ã£ãã©ã°ã¤ã³ãè¡ã£ã¦ããããããªããã©ã°ã¤ã³èªä½ã®ã¤ã³ã¹ãã¼ã«ãæ´æ°ã¯è¡ã£ã¦ããã¾ããããã®ã¬ãã«ã§ãã©ã°ã¤ã³ã管çããã人ã¯ããã¯ããã©ã°ã¤ã³ããã¼ã¸ã£ãã©ã°ã¤ã³ãå©ç¨ããã®ãè¯ãã¨æãã¾ãã
Vim 8.0 Advent Calendar 7 æ¥ç® ã¦ã£ã³ã㦠ID
Windows ID ã使ããã¨ã§ãç¹å®ã®ã¦ã£ã³ãã¦ã®è¿½è·¡ã容æã«ãªãã¾ãã
ã¦ã£ã³ã㦠ID ããªãã£ãæä»£
ã¦ã£ã³ãã¦ã®æå®ã¯ã¦ã£ã³ãã¦çªå·ã§è¡ã£ã¦ãã¾ãããããã¯ã¦ã£ã³ãã¦ã®ä½ç½®ã«å¯¾å¿ãã¦å·¦ä¸ããé ã«æ¯ããã¾ãã
+-------------------------------+ | | | | | 2 | | | | | 1 |---------------| | | | | | 3 | | | | +-------------------------------+
ã¦ã£ã³ãã¦ã¸ç§»åããããã¦ã£ã³ãã¦ã«ç´ä»ãããã夿°ã«ã¢ã¯ã»ã¹ããéã¯ããã®ã¦ã£ã³ãã¦çªå·ã使ã£ã¦ãã¾ããã
ãããããã®ã¦ã£ã³ãã¦çªå·ã¯ã¦ã£ã³ãã¦ãç§»åããã¨å¤ãã£ã¦ãã¾ãã¾ããä¾ãã°ä¸ã®ä¾ã§ãã¦ã£ã³ãã¦çªå· 1 ã®å ´æã§ <C-w>L ãè¡ãã¨ã以ä¸ã®ããã«ãªãã¾ã(æ¬å¼§å
ã¯å
ã®ã¦ã£ã³ãã¦çªå·ã§ã)ã
+-------------------------------+ | | | | (2->)1 | | | | | |---------------| (1->)3 | | | | | (3->)2 | | | | | +-------------------------------+
ããã ã¨å°ããã¨ãããã¨ã§åã¾ããã®ãã¦ã£ã³ã㦠ID ã§ãã
ã¦ã£ã³ã㦠ID ã¨ã¯
ã¦ã£ã³ã㦠ID ã¯å ¨ã¦ã®ã¦ã£ã³ãã¦ã«æ¯ããã ID ã§ãã ã¦ã£ã³ãã¦çªå·ã¨éããã¦ã£ã³ãã¦ãç§»åãã¦ãå¤ããã¾ããã
ã¦ã£ã³ã㦠ID ã®åå¾
" ç¾å¨ã¢ã¯ãã£ããªã¦ã£ã³ãã¦ã®ã¦ã£ã³ã㦠ID ãåå¾ãã¾ã let win_id = win_getid() " ç¾å¨ã¿ããã¼ã¸ããã¦ã£ã³ãã¦çªå·ãæå®ãã¦ã¦ã£ã³ã㦠ID ãåå¾ãã¾ã let win_id = win_getid(winnr) " ã¿ããã¼ã¸ã¨ã¦ã£ã³ãã¦çªå·ãæå®ãã¦ã¦ã£ã³ã㦠ID ãåå¾ãã¾ã let win_id = win_getid(winnr, tabnr) " ãããã¡åããããã¡çªå·ããæåã«è¦ä»ãã£ããããã¡ã " 表示ããã¦ããã¦ã£ã³ãã¦ã®ã¦ã£ã³ã㦠ID ãåå¾ãã¾ã let win_id = bufwinid(buf) " æå®ãããããã¡çªå·ã®ãããã¡ã表示ãã¦ãã " ã¦ã£ã³ãã¦ã®ã¦ã£ã³ã㦠ID ãé åã§å ¨ã¦åå¾ãã¾ã let win_ids = win_findbuf(bufnr)
ã¦ã£ã³ã㦠ID ã®ä½¿ç¨
" ç¾å¨ã®ã¿ããã¼ã¸ããã¦ã£ã³ã㦠ID ã®ã¦ã£ã³ãã¦ãæ¢ãã¦ã¦ã£ã³ãã¦çªå·ãè¿ãã¾ã " è¦ä»ãããªãã£ãå ´å㯠0 ãè¿ãã¾ã let winnr = win_id2win(win_id) " ã¦ã£ã³ã㦠ID ã®ã¦ã£ã³ãã¦ãæ¢ãã¦ã " ãã®ã¿ããã¼ã¸çªå·ã¨ã¦ã£ã³ãã¦çªå·ãè¦ç´ 2 ã®é åã§è¿ãã¾ã " è¦ä»ãããªãã£ãå ´å㯠[0, 0] ãè¿ãã¾ã let [tabnr, winnr] = win_id2tabwin(win_id) " æå®ã®ã¦ã£ã³ã㦠ID ã®ã¦ã£ã³ãã¦ã«ç§»åãã¾ããæåããã TRUE ãè¿ãã¾ã let succeed = win_gotoid(win_id)
ã¦ã£ã³ãã¦çªå·ã¨ã¦ã£ã³ã㦠ID ã®ä½µç¨
ã¦ã£ã³ã㦠ID 㯠1000 ããæ¯ããã¾ããããã«ããã1000 以ä¸ã®å ´åã¯ã¦ã£ã³ã㦠IDã1000 æªæºã®å ´åã¯ã¦ã£ã³ãã¦çªå·ã¨ä»®å®ãããã¨ã§ãæ¢åã®é¢æ°ã§ã¦ã£ã³ãã¦çªå·ã渡ãã¦ããç®æã§ã¦ã£ã³ã㦠ID ãæ¸¡ããããã«ãªã£ã¦ãã¾ãã以ä¸ã®é¢æ°ã§å©ç¨ã§ãã¾ãã
arglistid()getcwd()getloclist()gettabwinvar()haslocaldir()setloclist()settabwinvar()winheight()winwidth()
Vim 8.0 Advent Calendar 8 æ¥ç® defaults.vim
ä»åã¯æ°ãã Vim ã«è¿½å ããã defaults.vim ã¨ããæ©æ§ã«ã¤ãã¦è§£èª¬ãã¾ãã
èæ¯
Vim ã«ã¯ä»ã§ãå¤ãã®æ°æ©è½ã追å ãã便å©ã«ãªã£ã¦ãã£ã¦ãã¾ããã䏿¹ã§äºææ§ãéè¦ãã¦ãã¾ãã ä¸ã«ã¯ãã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããªã©æããã«ä¾¿å©ã§ããã«ãé¢ããããããã©ã«ãã§ã¯æå¹ã«ãªã£ã¦ããªãæ©è½ãããã¾ãã æ°ãã Vim ã使ãå§ããã¦ã¼ã¶ã¼ã«ã¨ã£ã¦ãäºææ§ãçç±ã§ä¾¿å©ãªæ©è½ãããã«ä½¿ããªããã¨ã¯ãã¾ãå¬ããã¯ãªãã§ãããã ããã§è¿½å ãããã®ã defaults.vim ã§ããããã¾ã§ Vim èªä½ã®ããã©ã«ãå¤ã¯å¤ããã«ãã¦ã¼ã¶ã¼ã«ä¾¿å©ãªè¨å®ãæä¾ãã¾ãã
defaults.vim ã®èªã¿è¾¼ã¿
ã¦ã¼ã¶ã¼ã® vimrc ãã¡ã¤ã«ãåå¨ããªãå ´åã$VIMRUNTIME/defaults.vim ãã¡ã¤ã«ã¯èªåã§èªã¿è¾¼ã¾ãã¾ãã
èªã¿è¾¼ã¿ãããªãå ´åã¯ãvimrc ãèªã¿è¾¼ã¾ãªãå ´åã¨åæ§ã« vim -u NONE ã vim -u NORC ãªã©ãæå®ã㦠Vim ãèµ·åãã¾ãã
ã¾ããã·ã¹ãã 管çè
ã defaults.vim ãèªã¿è¾¼ã¾ããããªãå ´åãã·ã¹ãã ã¯ã¤ãã® vimrc ã«ã¦ let g:skip_defaults_vim = 1 ãè¡ããã¨ã§ defaults.vim ã®è¨å®ã¯é©ç¨ãããªããªãã¾ãã
ãªãããã® defaults.vim ã®è¿½å ã«ãã£ã¦ãVim ã¯é常ã®èµ·åã§ã³ã³ãããã«ã¢ã¼ãã§èµ·åãããã¨ããªããªãã¾ããããã®ãã¨ã¯éäºæã®å¤æ´ã¨ã㦠help ã«ãè¨è¼ããã¦ãã¾ãã
defaults.vim ã®å 容
ä¾ãã°ä»¥ä¸ã®ãããªè¨å®ãããã¾ãã
- Vi äºæã¢ã¼ãããªãã«ãã (
set nocompatible) - filetype ã®æ¤åºããã©ã°ã¤ã³ãªã©ãæå¹ã«ãã
- ã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããæå¹ã«ãã
'nrformats'ãªãã·ã§ã³ã®å¤ããoctalãåãé¤ã- ééãã¦
<C-u>ããã¨ãã« undo ã§ããããã«ãã :DiffOrigEx ã³ãã³ãã®å®ç¾© (:help :DiffOrig)
詳細ã¯å®éã«ãã¡ã¤ã«ã®ä¸èº«ãè¦ã¦ã¿ã¦ãã ããã:e $VIMRUNTIME/defaults.vim ã§éãã¾ãã
defaults.vim ããå§ãã vimrc
defaults.vim ã¯æåã«ä½¿ãå§ãã vimrc ã®å©ãå°ã¨ãã¦ãæ©è½ãã¾ãã
æ°ããèªåç¨ã® vimrc ãæ¸ãå§ãããã¨æã£ãã¨ããdefaults.vim ã®å
容ãç¶æ¿ãããå ´åã¯ãdefaults.vim ãã¡ã¤ã«ã vimrc ãã¡ã¤ã«ã«ã³ãã¼ããããããã㯠vimrc ã®å
é ã«ä»¥ä¸ã®ããã«æ¸ãã¾ãã
source $VIMRUNTIME/defaults.vim
ãããããèªåã®æ°ã«å ¥ããªãé¨åãã¡ãã£ã¨ãã¤æãå ãã¦ããã¨ããã§ãããã
éã«è¨ãã¨ãããããè¡ããã«ã¦ã¼ã¶ã¼ã® vimrc ãã¡ã¤ã«ã使ããã¨ãdefaults.vim ãèªã¿è¾¼ã¾ããªããªããã¨ãããæåãå¤ãã£ã¦ãã¾ããã¨ã«æ³¨æãã¦ãã ããã
Vim 8.0 Advent Calendar 9 æ¥ç® 2 鲿°ã®ãµãã¼ã
Vim 8.0 ã§ã¯ 2 鲿°ã®ãµãã¼ããå¼·åããã¦ãã¾ãã
2 鲿°ã®æ°å¤ãªãã©ã«
0b ããã㯠0B ã§å§ã¾ã 2 鲿°ãªãã©ã«ã追å ããã¾ããã
echo 0b1010 == 10 " => 1
<C-a> <C-x> ã® 2 鲿°ãµãã¼ã
'nrformats' ãªãã·ã§ã³ã«æå®ã§ããå¤ã« bin ã追å ããã¾ããã
ããã¯ããã©ã«ãã§å«ã¾ãã¦ãããããç¹ã«è¨å®ããã«å©ç¨å¯è½ã§ãã
0b ã 0B ã§å§ã¾ã 2 鲿°ã®æ°å¤ã®ä¸ã§ <C-a> ã <C-x> ãå®è¡ããã¨ãæ°å¤ã墿¸ã§ãã¾ãã
0b1000 â<C-x> 0b0111
printf() ã® 2 鲿°ãµãã¼ã
printf() 颿°ã®ãã©ã¼ãããã« %b ã追å ããã¾ããã
ããã使ããã¨ã§ãæ°å¤ã 2 鲿°ã®æååã«å¤æã§ãã¾ãã
echo printf('0b%b', 10) " => 0b1010
ãã¡ãããã©ã°ã«ã対å¿ãã¦ãã¾ãã8 æ¡ã® 0 åãããã£ã³ã°ãããã«ã¯ä»¥ä¸ã®ããã«ãã¾ãã
echo printf('0b%08b', 10) " => 0b00001010
Vim 8.0 Advent Calendar 10 æ¥ç® quickfix ã«è¿½å ãããæ©è½
Vim 8.0 ã§ã¯ quickfix å¨ãã«ä¾¿å©ãªæ©è½ã追å ããã¾ããã
quickfix ã®åé ç®ã®å ´æã§ Ex ã³ãã³ããå®è¡ãã
quickfix ã®åé
ç®ã«å¯¾ã㦠Ex ã³ãã³ããå®è¡ãã :cdo Ex ã³ãã³ãã追å ããã¾ããããã® Ex ã³ãã³ãã使ããã¨ã§ãquickfix ã«å¯¾ããæè»ãªæä½ãå¯è½ã«ãªãã¾ãã
ä¾ãã°ãããã¸ã§ã¯ãã®ä¸ããåèª foo ãæ¢ããããããå
¨ã¦ bar ã«æ¸ãæããã«ã¯ä»¥ä¸ã®ããã«ãã¾ãã
" åèª foo ãæ¢ãã¾ããçµæã¯ quickfix ã«å ¥ãã¾ãã :vimgrep /\<foo\>/ **/* " æ¤ç´¢çµæã®åè¡ã«ã¦ãç½®æãè¡ãããããã¡ãä¿åãã¾ãã :cdo s/\<foo\>/bar/g | update
quickfix å ã®åãã¡ã¤ã«ã§ Ex ã³ãã³ããå®è¡ãã
ä¸è¨ã®ä¾ã«ããã¦ãæ¤ç´¢çµæã®åãã¡ã¤ã«ã«ã¤ãã¦è¤æ°ã®çµæã®ãã¼ã¿ãããå ´åã«ãåãã¡ã¤ã«ã«ã¤ãã¦ä½ãå¦çããããå ´åãããããããã¾ããããã®å ´åã« :cdo ã使ã£ã¦ãã¾ãã¨ãåãã¡ã¤ã«ã«ã¦çµæã®ãã¼ã¿ã®æ°ã ãå¦çãå®è¡ããã¦ãã¾ãã¾ãã
ãããã£ãå ´åã®ããã«ãcfdo Ex ã³ãã³ãã追å ããã¦ãã¾ãããã¡ãã® Ex ã³ãã³ãã¯ãquickfix ã«åå¨ãã¦ããåãã¡ã¤ã«ã«ã¤ãã¦ç¹°ãè¿ããè¡ãã¾ãã
åãã¡ã¤ã«ãéãããéã®ã«ã¼ã½ã«ä½ç½®ã¯ããã¡ã¤ã«å
ã®æåã® quickfix ã®é
ç®ã®ä½ç½®ã«ãªãã¾ãã
quickfix ã®ä¸çªä¸ã«ã¹ã¯ãã¼ã«ãã
Vim ã®éåææ©è½ãå¼·åããããããä»å¾ã¯ quickfix ã®å
容ãéåæã§æ´æ°ããããã¨ãããã§ãããããããã£ãå ´åã«ã常㫠quickfix ã®ä¸çªä¸ã®å
容ãè¦ããå ´åãããã¾ãã
æ°ãã追å ããã :cbottom Ex ã³ãã³ããå®è¡ããã¨ãquickfix ã¦ã£ã³ãã¦ã¸ç§»åããªãã¦ããquickfix ã¦ã£ã³ãã¦ã®å
容ãä¸çªä¸ã¾ã§ã¹ã¯ãã¼ã«ããããã¨ãã§ãã¾ãã
quickfix ã®å±¥æ´ãåç §ãã
quickfix ã®å
容ã¯ãææ°ã® 10 åã¾ã§å±¥æ´ãä¿åããã¦ãã¦ã以åã®å
å®¹ã«æ»ããã¨ãã§ãã¾ãã詳細㯠:help quickfix-error-lists ã«è¨è¼ããã¦ãã¾ãã
ãã®æ©è½ã¯ã以åã¾ã§ã¯å®éã« :colder ãªã©ãå®è¡ãã¦åã«æ»ã£ã¦ã¿ãªãã¨å¤ããã®ãåå¨ãããã©ããããããã¾ããã§ããã
ããã§è¿½å ãããã®ã :chistory Ex ã³ãã³ãã§ãããã® Ex ã³ãã³ããå®è¡ããã¨ãquickfix ã«ã©ã®ãããªå±¥æ´ããããç¾å¨ã©ããåç
§ããã¦ããã®ãã以ä¸ã®ããã«è¡¨ç¤ºããã¾ã(以ä¸ã¯ help ããã®æç²ã§ã)ã
error list 1 of 3; 43 errors > error list 2 of 3; 0 errors error list 3 of 3; 15 errors
ãã±ã¼ã·ã§ã³ãªã¹ãç
ä¸è¨ã® Ex ã³ãã³ã :cdo :cfdo :cbottom :chistory ã¯ããããããã±ã¼ã·ã§ã³ãªã¹ãçã¨ã㦠:ldo :lfdo :lbottom :lhistory ãç¨æããã¦ãã¾ãã
Vim 8.0 Advent Calendar 11 æ¥ç® ã¿ã¤ã ã¹ã¿ã³ãã§ç®¡çãããããã«ãªã£ã viminfo ãã¡ã¤ã«
ä»åã¯ãã¦ã¼ã¶ã¼ã®ä½æ¥ãè¨é²ããã¦ãã viminfo ãã¡ã¤ã«ã«ã¤ãã¦ã§ãã
viminfo ãã¡ã¤ã«ã®æ¦è¦
viminfo ãã¡ã¤ã«ã¯ãã¦ã¼ã¶ã¼ãè¡ã£ãæ§ã ãªæä½ãè¨é²ãã¦ãããã¡ã¤ã«ã§ããä¾ãã°ãã¬ã¸ã¹ã¿ã®å 容ãã³ãã³ãã©ã¤ã³ã®å±¥æ´ãæ¤ç´¢æååã®å±¥æ´ããã¸ã£ã³ããªã¹ããªã©ãæ§ã ãªæ å ±ãè¨é²ããã¾ãããããããã¡ã¤ã«ã«è¨é²ãããã¨ã§ã次å Vim ã使ã£ãéã«ããååã®å±¥æ´ãå¼ãç¶ãã§ä½¿ããã¨ãã§ãã¾ãã viminfo ãã¡ã¤ã«ã¯ãåºæ¬çã«ã¯èµ·åæã«èªã¿è¾¼ã¾ããçµäºæã«ãã¡ã¤ã«ã«æ¸ãåºããã¾ãã
viminfo ãã¡ã¤ã«ã®ãã¼ã¸
1 ã¤ã® viminfo ãã¡ã¤ã«ãè¤æ°ã® Vim ã®ã»ãã·ã§ã³ã§ä½¿ã£ãå ´åãviminfo ãã¡ã¤ã«ã¯ãã¼ã¸ããã¾ãã
ã©ã®ããã«ãã¼ã¸ãèµ·ããããä¾ãæãã¾ãã åæã« 2 ã¤ã® Vim ãç«ã¡ä¸ãã¦ããããã A B ã¨ãã¾ããèµ·åæã«ã¯ viminfo ã¯ç©ºã§ãã©ã¡ããæåã¯å±¥æ´ãããã¾ããã ãã®æã
- A ã§ Ex ã³ãã³ã
:echo 1ãå®è¡ - B ã§ Ex ã³ãã³ã
:echo 2ãå®è¡ - A ã§ Ex ã³ãã³ã
:echo 3ãå®è¡ - B ã§ Ex ã³ãã³ã
:echo 4ãå®è¡ - B ãçµäº
- A ãçµäº
ã¨ãã¾ãã
5 ã®æç¹ã§ãB ã®å±¥æ´ã viminfo ãã¡ã¤ã«ã«æ¸ãè¾¼ã¾ããviminfo ãã¡ã¤ã«ã«ã¯æ°ãããã®ãä¸ã«æ¥ãããã«ä»¥ä¸ã®ãããªé çªã§è¨é²ããã¾ã(å®éã®ãã¡ã¤ã«ã®å½¢å¼ã¨ã¯ç°ãªãã¾ã)ã
:echo 2 :echo 4
次㫠6 ã§ A ãçµäºããéãviminfo ãã¡ã¤ã«ã«æ´æ°ããããã¨ã Vim ãæ¤åºããã¨ã䏿¦æ°ãããªã£ã viminfo ãèªã¿è¾¼ã¿ã¾ããç¶ã㦠A ã® Vim ã®ã»ãã·ã§ã³ã§è¨é²ãããå±¥æ´ã追è¨ããviminfo ãã¡ã¤ã«ã«æ¸ãåºãã¾ãã以ä¸ã®ããã«ãªãã¾ãã
:echo 2 :echo 4 :echo 1 :echo 3
ãã®ããã«ãã³ãã³ãã©ã¤ã³ãã¹ããªããã¼ã¸ããã¾ãã
çºçããåé¡
ä¸è¨ã®ä¾ã§ã1 ã¤åé¡ãçºçãã¾ããã¦ã¼ã¶ã¼ã¯è¤æ°ã® Vim ãè¡ãæ¥ãã:echo 1 ãã :echo 4 ã¾ã§é çªã«å®è¡ããã®ã«ãé¢ããããå±¥æ´ã®é çªã¯ãã¡ããã¡ãã«ãªã£ã¦ãã¾ã£ã¦ãã¾ãã
ããã¯ç¹ã« Vim ãé·æéèµ·åãã¦ããå ´åãã¤ãå
ã»ã©å®è¡ããã³ãã³ããå±¥æ´ã®å¥¥æ·±ãã«æ½ã£ã¦ãã¾ããã¨ãæå³ãã¾ããä¾ã ã¨ãã¦ã¼ã¶ã¼ãæå¾ã«å®è¡ããã®ã¯ :echo 4 ã§ãããããã¯å±¥æ´ã®ä¸çªä¸ãã 3 çªç®ã«æ¥ã¦ãã¾ã£ã¦ãã¾ãã
æè¿å®è¡ãããã®ã¯ãå±¥æ´ã®ä¸ã§ãæè¿ã«åºã¦ãã¦ãããæ¹ãå¬ããã§ãããã
ã¿ã¤ã ã¹ã¿ã³ãã使ã£ãæ°ãã viminfo ãã¡ã¤ã«
ããã§ Vim 8.0 ã§ã¯ãã³ãã³ããªã©ã®å±¥æ´ãä¿åããéã«ãããããå®è¡ãããæéã®ã¿ã¤ã ã¹ã¿ã³ããä¸ç·ã«ä¿åããããã«ãªãã¾ããã ããã«ãã£ã¦å±¥æ´ã¯èªã¿è¾¼ã¾ããæã«ã¿ã¤ã ã¹ã¿ã³ãé ã§ã½ã¼ããããã¦ã¼ã¶ã¼ãå®è¡ããé çªã§å±¥æ´ãåç §ãããã¨ãã§ãã¾ãã 以ä¸ã®ãã®ãã¿ã¤ã ã¹ã¿ã³ãã§ç®¡çãããããã«ãªãã¾ããã
- ã³ãã³ãã©ã¤ã³ã®å±¥æ´
- æ¤ç´¢æååã®å±¥æ´
- å ¥åè¡ã®å±¥æ´
- 空ã§ã¯ãªãã¬ã¸ã¹ã¿ã®å¤
- ã¸ã£ã³ããªã¹ã
- ãã¡ã¤ã«ã®ãã¼ã¯
Vim 8.0 Advent Calendar 12 æ¥ç® é£çªã®çæ
Vim ã§é£çªã¨è¨ãã°ä»ã¾ã§ã§ãããã¯ããä½¿ãæ¹æ³ã Vim script ãæ´»ç¨ããæ¹æ³ãªã©ãããã¾ããããããæè»½ãªæ¹æ³ã追å ããã¾ããã
g<C-a> g<C-x> ã³ãã³ã
ä»ã¾ã§ã¯ãã¼ãã«ã¢ã¼ãã«ã¦ <C-a> <C-x> ãå®è¡ãããã¨ã§ãã«ã¼ã½ã«ä½ç½®ã®æ°å¤ã墿¸ã§ãã¾ãããããã¸ã¥ã¢ã«ã¢ã¼ãä¸ã§ãåæ§ã®æä½ãå¯è½ã«ãªãã¾ããã
å ãã¦ãé£çªãä½ãåºãããã® g<C-a> g<C-x> ããã¸ã¥ã¢ã«ã¢ã¼ãã®ã³ãã³ãã«è¿½å ããã¾ããã
使ç¨ä¾
ä¾ãã°ä»¥ä¸ã®ãããªãããã¡ããã£ãå ´å:
1 1 1 1 1
2 è¡ç®ä»¥éããã¸ã¥ã¢ã«ã¢ã¼ãã§é¸æãã¦ãg<C-a> ãå®è¡ããã¨ã以ä¸ã®ããã«ãªãã¾ãã
1 2 3 4 5
é£çªãä½ããã¨ãã§ãã¾ããã2 è¡ç®ä»¥éã鏿ããç¹ã«æ³¨æãã¦ãã ããã
ããã¯è¦ä»ãã£ãæ°å¤ã«å¯¾ãã¦ãè¦ä»ãã£ãé ã« [è¦ä»ãã£ãåæ°Ãcount] åãæ°å¤ãè¶³ãã¾ãã
ä¾ãã° 2g<C-a> ãå®è¡ããã¨ã以ä¸ã®ããã«ãªãã¾ãã
1 3 5 7 9
ãã®æä½ã¯è¡æåã§ã鏿ç¯å²ã®åè¡ã§æåã«è¦ä»ãã£ãæ°å¤ã®ã¿ã墿¸ããã¾ããã¾ããæ°å¤ãè¦ä»ãããªãã£ãè¡ã¯ã¹ãããããã¾ãã
1. ãã㯠1 ã¤ç®ã®é ç®ã§ãã 1. ãã㯠2 ã¤ç®ã®é ç®ã§ããã æãè¿ããå«ã¾ãã¦ãã¾ãã 1. ãã®é ç®ã«ãæãè¿ããå«ã¾ã㦠ãã¾ãã3 ã¤ç®ã®é ç®ã§ãã 1. 4 ã¤ç®ã®é ç®ã§ãã
ãã®ããã¹ãã«å¯¾ãã¦ã<C-v> ã§ 2 è¡ç®ããæçµè¡ã¾ã§ç©å½¢é¸æãè¡ããg<C-a> ãå®è¡ããã¨ã以ä¸ã®ããã«ãªãã¾ãã
1. ãã㯠1 ã¤ç®ã®é ç®ã§ãã 2. ãã㯠2 ã¤ç®ã®é ç®ã§ããã æãè¿ããå«ã¾ãã¦ãã¾ãã 3. ãã®é ç®ã«ãæãè¿ããå«ã¾ã㦠ãã¾ãã3 ã¤ç®ã®é ç®ã§ãã 4. 4 ã¤ç®ã®é ç®ã§ãã
æ°å¤ãåå¨ããªãè¡ã¯é£ã°ããã¾ãã
ããã§ V ã§è¡åä½ã§é¸æããã¦ãã¾ãã¨ã3 ã¤ç®ã®é
ç®ã®ä¸èº«ãå«ã¾ãã¦ãã¾ã£ã¦ãã¾ããããªããªãã¾ãã
1. ãã㯠1 ã¤ç®ã®é ç®ã§ãã 2. ãã㯠2 ã¤ç®ã®é ç®ã§ããã æãè¿ããå«ã¾ãã¦ãã¾ãã 3. ãã®é ç®ã«ãæãè¿ããå«ã¾ã㦠ãã¾ãã6 ã¤ç®ã®é ç®ã§ãã 5. 4 ã¤ç®ã®é ç®ã§ãã
'nrformats' ãªãã·ã§ã³ã« alpha ãå«ã¾ãã¦ããã°ãã¢ã«ãã¡ãããã®å¢æ¸ãå¯è½ã§ãã
a. ... a. ... a. ... a. ... a. ...
â
a. ... b. ... c. ... d. ... e. ...
g<C-x> ã¯æ°å¤ãæ¸ããç¹ä»¥å¤ã¯ g<C-a> ã¨åæ§ã«åä½ãã¾ãã
Vim 8.0 Advent Calendar 13 æ¥ç® undo ãåå²ããã«ã«ã¼ã½ã«ãç§»å
æ®æ®µã¯ãã¾ãæ°ã«ããªãããããã¾ããããundo ã®åä½ã¯éè¦ã§ãããã® undo ã«ã¤ãã¦ãæ°ããæ©è½ã追å ããã¾ããã
æ¿å ¥ã¢ã¼ãã§ã®æä½ã®åå²
æ¿å
¥ã¢ã¼ãã§ã®æä½ä¸ã«ã<Left> ãªã©ã§ã«ã¼ã½ã«ä½ç½®ãåããã¨ãundo æ
å ±ã . ã§ã®ãªãã¼ããå£ãã¦ãã¾ãã¾ãã
ä¾ãã°ä»¥ä¸ã®ãã¼ãããã³ã°ããã£ãå ´åã
inoremap ( ()<Left>
æ¿å
¥ã¢ã¼ãã§ foo(bar ã¨å
¥åãããã¨ã§ foo(bar) ãå
¥åã§ãã¾ãã
å ¥å: afoo(bar<Esc> â foo(bar)
ããããããã§ u ã³ãã³ãã§ undo ãè¡ãã¨foo() ã¨ãªã£ã¦ãã¾ãã¾ããã¾ãã. ã³ãã³ãã§ãªãã¼ããå®è¡ããã¨ãbar ãæ¿å
¥ããã¾ãã
foo(bar) â å ¥å: u â foo()
foo(bar) â å ¥å: j. â foo(bar) bar
ãã㯠<Left> ã«ããå
¥åæ
å ±ãéåãã¦ãã¾ãããã§ããã¤ã¾ãã<Left> ãè¡ã£ãæç¹ã§ãæ¿å
¥ã¢ã¼ãã䏿¦æãã¦å
¥ãç´ããã®ã¨åããã¨ã«ãªãã¾ãã
æ¿å
¥ã¢ã¼ãã§ã® <C-g>U ã³ãã³ã
ãã®åé¡ãé¿ããããã«ã<C-g>U ã³ãã³ãã追å ããã¾ãããããã¯ã«ã¼ã½ã«ãåããã³ãã³ãã®ç´åã§ä½¿ç¨ãã¾ãã
ãã®ã³ãã³ãã使ãããã«ããã¼ãããã³ã°ã以ä¸ã®ããã«æ¸ãæãã¾ãã
inoremap ( ()<C-g>U<Left>
æåã®ä¾ã¨åæ§ã« foo(bar ãå
¥åãããã®å¾ãããã u ã³ãã³ãã . ã³ãã³ããå®è¡ããã¨ãå
¥åããã foo(bar) å
¨ä½ã 1 ã¤ã®å
¥åã¨ãã¦åä½ãã¾ãã
foo(bar) â å ¥å: u â
foo(bar) â å ¥å: j. â foo(bar) foo(bar)
ãã® <C-g>U ã³ãã³ãã¯ãã«ã¼ã½ã«ãè¡ãè·¨ããªãç§»åãããå ´åã®ã¿æå¹ã§ãã
<C-g>U ã³ãã³ãã¯ä¾¿å©ã§ãããæã§å
¥åããã«ã¯ã¡ãã£ã¨è¤éã§ããä»åã®ä¾ã®ããã«ããã¼ãããã³ã°ã§ä½¿ãã¨ããã§ãããã
Vim 8.0 Advent Calendar 14 æ¥ç® æ°ãããªãã·ã§ã³ ãã® 1
æ°ãªãã·ã§ã³ç´¹ä»ãã® 1 ã§ãã追å ããããã®ã®ä¸ã§ã便å©ãªãªãã·ã§ã³ã«ã¤ãã¦è§£èª¬ãã¾ãã
'breakindent' (çå½å¤) 'breakindentopt' (ã«ã³ãåºåãæåå)
ãªã³ã«ããã¨ãæãè¿ãã¦è¡¨ç¤ºãããè¡ãã¤ã³ãã³ãããã¦è¡¨ç¤ºããã¾ãã
ã¤ã¾ã以ä¸ã®ããã«ãªãã¾ããå·¦ã 'breakindent' ããªããå³ããªã³ã§ããã¾ãã'showbreak' ãªãã·ã§ã³ã®å¤ã« > ãè¨å®ããã¦ãã¾ãã4 è¡ç®ã®æãè¿ãã«æ³¨ç®ãã¦ãã ããã

ã¾ãã'breakindentopt' ãªãã·ã§ã³ã§ç´°ããæåãå¶å¾¡ã§ãã¾ãããã®ãªãã·ã§ã³ã¯ã«ã³ãåºåãã®æååã§ã以ä¸ã®è¦ç´ ãæå®ã§ãã¾ãã
min:{n}- æ·±ãã¤ã³ãã³ããçãããå¹ ã§æãè¿ãããªãããã«ã1 è¡ã®æå°ã®å¹ ãæå®ãã¾ããæªæå®ã®å ´å㯠20 ã«ãªãã¾ãã
shift:{n}- æãè¿ãããä½ç½®ããããã¾ããæ£æ°ã§å³ã«ãè² æ°ã§å·¦ã«ãããã¾ããæªæå®ã®å ´å㯠0 ã§ããããã¾ããã
- sbr
- ã¤ã³ãã³ãã®å·¦å´ã«
'showbreak'ã表示ãã¾ãã
- ã¤ã³ãã³ãã®å·¦å´ã«
ä¾ãã°ãshift:4,sbr ãæå®ããã¨ã以ä¸ã®ããã«ãªãã¾ãã

'showbreak' ã§ãã > è¨å·ãè¡é ã«ç§»åããæãè¿ãã®ã¤ã³ãã³ãã if ã®ã¤ã³ãã³ãã«æ¯ã¹ã¦å³ã« 4 ã¤ããã¦ãã¾ãã
'fixendofline' (çå½å¤)
é常ãVim ã¯ä¿åæã«ãã¡ã¤ã«ã®æ«å°¾ã«å¿ ãæ¹è¡ãå ¥ãã¾ãããã㯠POSIX ã«ã¦ãããã¹ãã¯è¡ã®éåã§ãããè¡ã¯å¿ ãæ¹è¡ã§çµããã¨ããã¦ããããã ã¨æããã¾ãã ãã®ãã¡ã¤ã«æ«å°¾ã®æ¹è¡ã®ä»ä¸ã¯ããã¡ã¤ã«æ«å°¾ã«æ¹è¡ã®ãªããã¡ã¤ã«ãéãã¦ç·¨éããä¿åããå ´åã«ãè¡ããã¾ãã ããã¯ç¹ã«ãã¼ã ã§ä½æ¥ãã¦ããå ´åã«å°ãå ´åãããã¾ããã¾ããä¸é¨ã® CSV ã®å¦çç³»ãªã©ããã¡ã¤ã«æ«å°¾ã®æ¹è¡ã®æç¡ã§æå³ãåãããã¡ã¤ã«ãæ±ãå ´åãå°ãã¾ãã
ããã§ 'fixendofline' ãªãã·ã§ã³ã追å ããã¾ããããã®ãªãã·ã§ã³ã¯ããã©ã«ãã§ã¯ãªã³ã§ãä¿åæã«ãã¡ã¤ã«æ«å°¾ã«æ¹è¡ã追å ãã¾ãã
ãªãã®å ´åã'endofline' ãªãã·ã§ã³ã«å¾ã£ã¦æ¹è¡ãä»ä¸ãã¾ãããªã³ãªãæ¹è¡ãä»ä¸ããããªããªãæ¹è¡ã¯ä»ä¸ããã¾ããã
ãã® 'endofline' ãªãã·ã§ã³ã¯ãæ¢åã®ãã¡ã¤ã«ãéããéã«ã¯ãã¡ã¤ã«ã®æ«å°¾ã®æ¹è¡ãè¦ã¦èªåã§ãªã³ãªãããã¾ãã
ã¤ã¾ãã¾ã¨ããã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
- ãã¡ã¤ã«æ«å°¾ã®æ¹è¡ãããã£ã¦æ¬²ãããªãå ´åã¯ã
set nofixendoflineã vimrc ãã¡ã¤ã«ã«æ¸ãã¾ãã - ãã¡ã¤ã«æ«å°¾ã®æ¹è¡ã®æç¡ãæä½ãããå ´åã¯ãä¸è¨ã«å ãã¦ãé½åº¦
'endofline'ãªãã·ã§ã³ã®å¤ã夿´ãã¾ãã
'belloff' (ã«ã³ãåºåãæåå)
Vim ã¯ã¨ã©ã¼ãçºçããéã«ãã«ãé³´ããã¾ãããããç¡å¹åãããå ´åã以åã¯ä»¥ä¸ã®ãããªè¨å®ãæ¸ãã¦ãã¾ããã
set visualbell t_vb=
æ°ãã追å ããã 'belloff' ãªãã·ã§ã³ã使ãã¨ã代ããã«ä»¥ä¸ã®ããã«æ¸ãã¾ãã
set belloff=all
'belloff' ãªãã·ã§ã³ã¯ãã©ããªæã«ãã«ãé³´ãããªãããã«ãããã®ããç´°ããæå®ã§ãã¾ããç¹å®ã®å ´åã®ãã«ã®ã¿ç¡å¹ã«ãããï¼ã¨ãã£ããã¨ãå¯è½ã§ãã
ã©ã®ãããªå¤ãæå®å¯è½ã㯠help ãåç
§ãã¦ãã ããã
Vim 8.0 Advent Calendar 15 æ¥ç® æ°ãããªãã·ã§ã³ ãã® 2
æ°ãªãã·ã§ã³ç´¹ä»ãã® 2 ã§ãããã® 1 ã«æ¯ã¹ãã¨å°å³ãªãªãã·ã§ã³éãç°¡åã«ç´¹ä»ãã¾ãããããã詳細㯠help ãåç §ãã¦ãã ããã
'renderoptions' (ç¹æ®å½¢å¼æåå)
ããã¹ãã¬ã³ãã©ã®è¨å®ã§ãããã®ãªãã·ã§ã³ãè¨å®ãããã¨ã«ãã£ã¦ãWindows ã§ã¯ã¬ã³ããªã³ã°ã« DirectX ã使ãã¾ãã ã¾ããDirectX ã«å¯¾ãã¦æ§ã ãªãªãã·ã§ã³ãè¨å®ã§ãã¾ãã
'emoji' (çå½å¤)
ãªã³ã«ããã¨ã¦ãã³ã¼ãçµµæåãå ¨è§ã¨ã¿ãªãã¾ããããã©ã«ãã¯ãªãã§ãã
'langremap' (çå½å¤)
å
ã
'langnoremap' ãªãã·ã§ã³ãããã¾ããããã®ãªãã·ã§ã³ã¯çå½å¤ã®ãªãã·ã§ã³ã§ãã£ããããããããªãã«ãããã¨ããã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
set nolangnoremap
ããã¯äºéå¦å®ã§ãããã¥ãããã¨ãããã¨ã§è¿½å ãããã®ã 'langremap' ãªãã·ã§ã³ã§ãã'langnoremap' ãªãã·ã§ã³ã¯ä»ãäºææ§ã®ããã«æ®ããã¦ãã¦ããã® 2 ã¤ã®ãªãã·ã§ã³ã¯å¸¸ã«éã®å¤ãæãããã«ãªã£ã¦ãã¾ãã
'signcolumn' (ç¹å®æåå)
sign ã®æ¡ã表示ãããã©ãããè¨å®ãã¾ããããã©ã«ã㯠auto ã§ãsign ãåå¨ããå ´åã®ã¿è¡¨ç¤ºããã¾ãã
ãã®ä»ãyes no ã§å¸¸ã«ãªã³/ãªããå¯è½ã§ãã
sign ã¯æ¬æ¥ã®ç®ç以å¤ã§ããè¡å
¨ä½ããã¤ã©ã¤ãããããã« hack çã«ãã©ã°ã¤ã³ãã使ãããå ´åãããããã®ãããªæã« no ãè¨å®ãããã¨ã§ä½è¨ãª sign ã«ã©ã ãé表示ã«ãããã¨ãã§ãã¾ãã
'tagcase' (ç¹å®æåå)
ã¿ã°ãã¡ã¤ã«å
ãæ¤ç´¢ããéã®å¤§æåå°æåã®åºå¥ããæ¹æ³ãæå®ãã¾ãã
å
ã
ã¯ãã㯠'ignorecase' ãªãã·ã§ã³ã®å¤ã«ä¾åãã¦ãã¾ãããã'ignorecase' ã¯ã¤ã³ã¿ã©ã¯ãã£ããªæ¤ç´¢ãªã©ã§ä½¿ããããã¨ãããããªã³ã«ãã¦ãã人ãå¤ããã¨æãã¾ãã䏿¹ãã¿ã°ãã¡ã¤ã«å
ã®æ¤ç´¢ã¯ããã°ã©ãã³ã°è¨èªã®èå¥åãªã©ãå
¥ã£ã¦ãããã¨ãããã大æåå°æåã¯åºå¥ãã¦æ¬²ããå ´åãå¤ãã§ããããã§ãããããç¬ç«ãã¦è¨å®ã§ããããã«ããããã« 'tagcase' ãªãã·ã§ã³ã追å ããã¾ããã
ããã©ã«ãå¤ã¯ followic ã§ãäºææ§ãä¿ã¤ããã« 'ignorecase' ã«è¿½å¾ãã¾ãã常ã«å¤§æåå°æåãåºå¥ãã¦æ¬²ããå ´åã¯ãmatch ãè¨å®ãã¾ããä»ã«ãããã¤ãè¨å®ã§ããå¤ãããã¾ãã
'termguicolors' (çå½å¤)
ãªã³ã«ããã¨ãã¿ã¼ããã«å ã§ã GUI ç¨ã® 24 ãããã«ã©ã¼ã®ã«ã©ã¼ã¹ãã¼ã ã使ç¨ã§ãã¾ãããã ããISO-8613-3 äºæã®ã¿ã¼ããã«ãå¿ è¦ã§ãã 対å¿ãã¦ããªãã¿ã¼ããã«ã§ãªã³ã«ããã¨æ®å¿µãªãã¨ã«ãªãã®ã§æ³¨æãã¦ãã ããã
'luadll' 'perldll' 'pythondll' 'pythonthreedll' 'rubydll' 'tcldll' (æåå)
Vim ã«ã¯æ§ã
ãªè¨èªã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãããããã«ãæã«ããããæå®ã§ãã¾ãã
ãã¤ãããã¯ãªã³ã¯ãå¯è½ã§ããããããã¾ã§ã¯ããã® dll ã®ãã¡ã¤ã«åã¯ãã«ãæã«æå®ãããã®ã«åºå®ã§ããã
ããããã¿ã¤ãããã¯ãªã³ã¯ã§ãã以ä¸ããã¡ã¤ã«åã¯ç°å¢ã«ãã£ã¦å¤ããå ´åãããã¾ããããã§ããªãã·ã§ã³ã«ãã£ã¦ dll ã®ãã¡ã¤ã«åãæå®ã§ããããã«ãªãã¾ããã
'pythonthreedll' 㯠Python 3 ã®ããã®ãã®ã§ããæ¬æ¥ 'python3dll' ã¨ãããã£ãããã§ããããªãã·ã§ã³åã«æ°å¤ã使ããªãã¨ããå¶ç´ãåå¨ããããããã®ããã«ãªã£ã¦ãã¾ãã
Vim 8.0 Advent Calendar 16 æ¥ç® æ°ãã Ex ã³ãã³ã
Vim 8.0 ã§å©ç¨ã§ããæ°ãã Ex ã³ãã³ãã®ãã¡ãã¾ã ç´¹ä»ãã¦ããªããã®ãç´¹ä»ãã¾ãã
:filter[!] {pat} {command}
{command} ã®åºåã®ãã¡ã{pat} ã§æå®ããæ£è¦è¡¨ç¾ã«ãããããè¡ã ãã表示ãã¾ãã[!] ãæå®ããã¨ãéã«ãããããªãè¡ã ãã表示ãã¾ãã
{pat} 㯠/foo/ ã®ããã« / ãªã©ã®è¨å·ã§å²ãããå½¢å¼ã§ãããã ãããã¿ã¼ã³ãè¨å·ãªã©ãå«ã¾ãªãå ´å㯠/ ã¯çç¥ã§ãã¾ãã
以ä¸ã«ä½¿ç¨ä¾ãæãã¾ãã
" ãã¼ã¯ãè¨é²ãã¦ãããã¡ã¤ã«ã®ãã¡ã.txt ã§çµãããã®ã表示ãã¾ãã filter /\.txt$/ oldfiles " èªã¿è¾¼ã¾ãã Vim script ã®ãã¡ããã¹ã« vimrc ãå«ããã®ã表示ãã¾ãã filter vimrc scriptnames " éããã¦ãããããã¡ã®ãã¡ã.vim ãå«ããã®ã表示ãã¾ãã filter /\.vim/ buffers " ãã¼ãããã³ã°ã®ã©ããã« <C-r> ãå«ããã®ã表示ãã¾ãã execute "filter /\<C-r>/ map" " ç¾å¨ã®ãããã¡ãããfoo ãå«ãè¡ã表示ãã¾ãã filter foo %print " âã®ä¾ã¯ :global ã§ãå®ç¾ã§ãã¾ãã global/foo/print
æå¾ã«æ³¨æç¹ã¨ãã¦ããã® Ex ã³ãã³ãã¯å
¨ã¦ã®åºåããã£ã«ã¿ããããã§ã¯ããã¾ãããä¾ãã°ã:echo ã®çµæã¯ãã£ã«ã¿ããã¾ããã
:keeppatterns {command}
æ¤ç´¢å±¥æ´ã«æãå ããã« {command} ãå®è¡ãã¾ãã
:substitute (:s///) ã :global ãªã©ã®ä¸é¨ã® Ex ã³ãã³ãã¯ãé常㯠Vim script ä¸ã§ä½¿ã£ãå ´åã§ããã¿ã¼ã³ãæ¤ç´¢å±¥æ´ã«è¿½å ããã¦ãã¾ãã¾ããããã¯ãã©ã°ã¤ã³ã®ä¸ãªã©ã§ä½¿ãå ´åã«åé¡ã«ãªãã¾ãã
ããã§ãã® :keeppatterns Ex ã³ãã³ãã使ã£ã¦ :keeppatterns global/.../ ãªã©ã®ããã«ãããã¨ã§ãæ¤ç´¢å±¥æ´ã夿´ããã¦ãã¾ãã®ãé²ããã¨ãã§ãã¾ãã
ãã㯠{command} ã®å®è¡ä¸ã¯ãã£ã¨æãå ããªãã¨ãããã¨ã§ã¯ãªããç´æ¥æå®ãã Ex ã³ãã³ããæ¤ç´¢ã使ããã®ã ã£ãå ´åã ãæå¹ã§ããã¤ã¾ã以ä¸ã®å ´åã¯ãæ¤ç´¢å±¥æ´ã¯å¤æ´ããã¦ãã¾ãã¾ãã
" :execute ãæã keeppatterns execute "s/\<CR>//ge" " 颿°çµç± function! s:work() abort s/\e//ge endfunction keeppatterns call s:work()
:noswapfile {command}
{command} ãå®è¡ãã¾ãããã®ã¨ããæ°ãããããã¡ãéãããå ´åã¯ã¹ã¯ãããã¡ã¤ã«ã使ãã¾ããã
ããã¯ãã©ã°ã¤ã³ãä»®æ³ãããã¡ã使ããéã«ä¾¿å©ã§ãã
ãã® Ex ã³ãã³ãã :keeppatterns Ex ã³ãã³ãã¨åæ§ããããã¡ãéãã³ãã³ãã {command} ã«ç´æ¥æå®ããå ´åã®ã¿æå¹ã§ãã
ãã ãã:vertical Ex ã³ãã³ãã :leftabove Ex ã³ãã³ããªã©ã®ãã¦ã£ã³ãã¦ãéãå
ãæå®ãã修飾åã³ãã³ãã¯å«ã¾ãã¦ãã¦ãåé¡ããã¾ããã
:clearjumps
ç¾å¨ã®ã¦ã£ã³ãã¦ã®ã¸ã£ã³ããªã¹ãã空ã«ãã¾ãã
ã«ã¼ã½ã«ã大ããç§»åãããã³ãã³ããå®è¡ãããããããã¡ãç§»åãããããå ´åããã®ã«ã¼ã½ã«ã®ç§»åã¯ã¸ã£ã³ããªã¹ãã«è¨é²ããããã¨ãã辿ã£ã¦ç§»åãããã¨ãã§ãã¾ãã ããã¯å¤ãã®å ´å便å©ã§ãããä¾ãã°ãã©ã°ã¤ã³ãä»®æ³ãããã¡ãéããéãªã©ã«ãæ»ãã¦ãã¾ãã¨ä¸ä¾¿ãªå ´åãããã¾ãããããã£ãå ´åã«ãã® Ex ã³ãã³ãã使ãã¾ãã
:helpclose
ç¾å¨ã®ã¿ããã¼ã¸ã«ãã«ãã¦ã£ã³ãã¦ãããã°ã1 ã¤ã ãéãã¾ãã ããã¯ç¾å¨ã®ã¦ã£ã³ãã¦ããã«ãã¦ã£ã³ãã¦ã§ã¯ãªãå ´åã«ãåä½ããã®ã§ãé¢ããå ´æã«ãããã«ãã¦ã£ã³ãã¦ãéããã®ã«ä¾¿å©ã§ãã 1 ã¤ããã«ãã¦ã£ã³ãã¦ããªãå ´åã¯ç¹ã«ã¨ã©ã¼ã«ããªãããä½ãèµ·ãã¾ããã
Vim 8.0 Advent Calendar 17 æ¥ç® æ°ãã颿° ï½æååæä½ç·¨ï½
Vim 8.0 ã§ã¯æ°ãã便å©ãªçµã¿è¾¼ã¿é¢æ°ã夿°è¿½å ããã¦ãã¾ããä»åã¯ãã®ä¸ãããæååæä½ã«é¢é£ãããã®ãç´¹ä»ãã¾ãã
matchstrpos({expr}, {pat}[, {start}[, {count}]])
Vim script ã«ã¯å
ã
ãæå®ããæååãããæ£è¦è¡¨ç¾ã«ãããããä½ç½®ãåãåºã match() 颿°ã¨ããããããæååãåãåºã matchstr() ã¨ãã颿°ãããã¾ãã
ããã颿°ã¯ä¾¿å©ã§ããããããããä½ç½®ã¨ãããããæåå両æ¹ã欲ããå ´åã«ã¯å°ãåé¡ãããã¾ãããã®å ´åãããããã®é¢æ°ãå¼ã³åºããã¨ã«ãªãã®ã§ããã颿°ã 2 åå¼ã³åºãã®ã¯æéããããä¸ã«ãåãæ£è¦è¡¨ç¾ãããã 2 åè¡ãã®ã¯ããã©ã¼ãã³ã¹çã«ãç¡é§ã§ãã
ããã§ãmatchstrpos() 颿°ã追å ããã¾ããã弿°ã¯ match() 颿°ã matchstr() 颿°ã¨åãã§ãæ»ãå¤ãéãã¾ãã"ãããããæåå"ã"ãããããå
é ã®ä½ç½®"ã"ãããããæ«å°¾ã®ä½ç½®" ã® 3 è¦ç´ ã®é
åãè¿ãã¾ãã
echo matchstrpos('fizz buzz fizzbuzz', 'b\w\+') " => ['buzz', 5, 9]
strcharpart({src}, {start}[, {len}])
Vim script ã«ã¯å
ã
ãæååã®ä¸é¨ãåãåºã strpart() 颿°ãããã¾ãããããã¯ãã¤ãåä½ã§åä½ããããããã«ããã¤ãæåã«å¯¾ãã¦ä½¿ãã¨æååã®ãã¤ãã®éä¸ã§åãåããã¦ãã¾ãã¨ããåé¡ãããã¾ããã
ããã§ strcharpart() ã追å ããã¾ãããããã¯ãã¤ãåä½ã§ã¯ãªããæååä½ã§æååã®ä¸é¨ãåãåãã¾ãã
echo strcharpart('ããããã', 1, 3) " => ããã
strgetchar({str}, {index})
æååå ã®æå®ãã index ã®æåã®æåã³ã¼ããåå¾ãã¾ããããã¯ãã¤ãã§ã¯ãªãæååä½ã§åä½ãã¾ããæåæ°ã¯ãã«ããã¤ãã§æ°ããããçµæã¯ãã«ããã¤ãæåã® 1 æåã®æåã³ã¼ãã«ãªãã¾ãã
let code = strgetchar('ããããã', 4) echo printf('0x%x', code) " => 0x304a echo nr2char(code) " => ã
byteidxcomp({expr}, {nr})
Vim script ã«ã¯ byteidx() ã¨ãã颿°ãããã¾ããããã¯ããã«ããã¤ãæåãèæ
®ãã¦ã{expr} ã«ä¸ããæååã® 0 ãªãªã¸ã³ã§ {nr} çªç®ã®æåããæååå
ã®ä½ãã¤ãç®ããè¿ãã¾ãã{nr} ãæååã®æåæ°ã¨åãå ´åã¯æååå
¨ä½ã®ãã¤ãæ°ãè¿ãã{nr} ããããã大ããå ´å㯠-1 ãè¿ãã¾ãã
echo byteidx('ããããã', 2) " => 6 echo byteidx('ããããã', 5) " => 15 echo byteidx('ããããã', 6) " => -1
æ°ãã追å ããã byteidxcomp() ã¯ãåææåãåå¥ã«ã«ã¦ã³ããã¾ãã
let s = 'e' . nr2char(0x301) echo s " => eÌ echo byteidx(s, 1) " => 3 (åææåã 1 æåã¨ã¿ãªããæååã 1 æåã§ããããæååå ¨ä½ã®ãã¤ãæ°ãè¿ãã¾ã) echo byteidx(s, 2) " => -1 (åææåã 1 æåã¨ã¿ãªãã{nr} ãæåæ°ãã大ãããã -1 ãè¿ãã¾ã) echo byteidxcomp(s, 1) " => 1 (åææåãå¥ã ã®æåã¨ã¿ãªãã"e" ã¾ã§ãã«ã¦ã³ãã㦠1 ãè¿ãã¾ã) echo byteidxcomp(s, 2) " => 3 (åææåãå¥ã ã®æåã¨ã¿ãªããæååã 2 æåã§ããããæååå ¨ä½ã®ãã¤ãæ°ãè¿ãã¾ã)
glob2regpat()
glob() 颿°ãªã©ã§ä½¿ããããããããã¯ã¤ã«ãã«ã¼ããªã©ãå«ã¾ãããã¡ã¤ã«ãã¿ã¼ã³ãæ£è¦è¡¨ç¾ã«å¤æãã¾ãã
echo glob2regpat('*.vim')
ä»ã®ã¨ãããã¯ã¤ã«ãã«ã¼ãã® * ã ** ããæ£è¦è¡¨ç¾ã® .* ã«å¤æãããããã§ããå®éã®ã¯ã¤ã«ãã«ã¼ãã® * ã¯ãã£ã¬ã¯ããªã辿ããã/ ãªã©ã®ãã£ã¬ã¯ããªåºåãæåã«ã¯ãããããªããããè¥å¹²æåãç°ãªã£ã¦ãã¾ãç¹ã«æ³¨æãã¦ãã ããã
Vim 8.0 Advent Calendar 18 æ¥ç® æ°ãã颿° ï½æ å ±åå¾ç·¨ï½
ä»åã¯æ°ãã追å ããã颿°ã®ä¸ãããæ å ±ãåå¾ãããã®ãä¸å¿ã«ç´¹ä»ãã¾ãã
wordcount()
ç¾å¨ãããã¡ã®çµ±è¨æ
å ±ãè¾æ¸ã§åå¾ãã¾ãã
ãã®æ
å ±ã¯ g<C-g> ã³ãã³ãã§è¡¨ç¤ºã§ãããã®ã§ããã表示ã ãã ã¨ã¹ã¯ãªããããæ±ãã®ãå°é£ã§ããããã颿°ã追å ããã¾ããã
è¾æ¸ã«ã¯ä»¥ä¸ã®æ å ±ãå«ã¾ãã¾ãã
| ãã¼ | 説æ |
|---|---|
bytes |
ãããã¡å ã®ãã¤ãæ°ã§ãã |
chars |
ãããã¡å ã®æåæ°ã§ãã |
words |
ãããã¡å ã®åèªæ°ã§ãã |
cursor_bytes |
ã«ã¼ã½ã«ä½ç½®ããåã®ãã¤ãæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã§ãªãå ´åã®ã¿åå¨ãã¾ãã |
cursor_chars |
ã«ã¼ã½ã«ä½ç½®ããåã®æåæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã§ãªãå ´åã®ã¿åå¨ãã¾ãã |
cursor_words |
ã«ã¼ã½ã«ä½ç½®ããåã®åèªæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã§ãªãå ´åã®ã¿åå¨ãã¾ãã |
visual_bytes |
ãã¸ã¥ã¢ã«é¸æé åå ã®ãã¤ãæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã®å ´åã®ã¿åå¨ãã¾ãã |
visual_chars |
ãã¸ã¥ã¢ã«é¸æé åå ã®æåæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã®å ´åã®ã¿åå¨ãã¾ãã |
visual_words |
ãã¸ã¥ã¢ã«é¸æé åå ã®åèªæ°ã§ãããã¸ã¥ã¢ã«ã¢ã¼ãã®å ´åã®ã¿åå¨ãã¾ãã |
getbufinfo([{expr}]) getbufinfo([{dict}])
ãããã¡ã®æ å ±ãè¾æ¸ã®é åã§åå¾ãã¾ãã弿°ãä¸ããªãå ´åãå ¨ã¦ã®ãããã¡ã®æ å ±ãåå¾ãã¾ãã é åã®åè¦ç´ ã®è¾æ¸ã¯ã以ä¸ã®ã¨ã³ããªã¼ãæã£ã¦ãã¾ãã
| ãã¼ | 説æ | ||||||||
|---|---|---|---|---|---|---|---|---|---|
bufnr |
ãããã¡çªå·ã§ãã | ||||||||
changed |
ãããã¡ã夿´ããã¦ãããªã('modified' ããªã³ãªã) TRUE ã«ãªãã¾ãã | ||||||||
changedtick |
ãããã¡ã夿´ãããåæ°(b:changedtick ã®å¤)ã§ãã | ||||||||
hidden |
é ããããã¡ã§ãããªã('hidden' ããªã³ãªã) TRUE ã«ãªãã¾ãã | ||||||||
listed |
ãããã¡ããããã¡ãªã¹ãã«è¡¨ç¤ºããããªã('buflisted' ããªã³ãªã) TRUE ã«ãªãã¾ãã | ||||||||
loaded |
ãããã¡ããã¼ãæ¸ã¿ãªã TRUE ã«ãªãã¾ãã | ||||||||
name |
ãããã¡å(ãããã¡ã®ãã¡ã¤ã«ã®ãã«ãã¹)ã§ãã | ||||||||
signs |
ãµã¤ã³ã®æ
å ±ã®ãªã¹ãã§ãããªã¹ãã®åè¦ç´ ã¯è¾æ¸ã§ã以ä¸ã®è¦ç´ ãæã¡ã¾ãã
|
||||||||
variables |
ãããã¡ãã¼ã«ã«å¤æ°ãåç §ããè¾æ¸ã§ãã | ||||||||
windows |
ãããã¡ã表示ãã¦ããã¦ã£ã³ãã¦ã®ã¦ã£ã³ã㦠ID ã®ãªã¹ãã§ãã |
弿°ã渡ããå ´åã¯ãåå¾ããããããã¡ã®æ¡ä»¶ãæå®ãããã¨ã§çµãè¾¼ã¿ãã§ãã¾ãã詳細㯠help ãåç §ãã¦ã¿ã¦ãã ããã
getwininfo([{winid}])
ã¦ã£ã³ãã¦ã®æ å ±ãè¾æ¸ã®é åã§åå¾ãã¾ãã弿°ãä¸ããªãå ´åãå ¨ã¦ã®ã¿ããã¼ã¸ã®ã¦ã£ã³ãã¦ã®æ å ±ãåå¾ãã¾ãã é åã®åè¦ç´ ã®è¾æ¸ã¯ã以ä¸ã®ã¨ã³ããªã¼ãæã£ã¦ãã¾ãã
| ãã¼ | 説æ |
|---|---|
bufnr |
ã¦ã£ã³ãã¦ãéãã¦ãããããã¡ã®ãããã¡çªå·ã§ãã |
height |
ã¦ã£ã³ãã¦ã®é«ãã§ãã |
loclist |
ãã®ã¦ã£ã³ãã¦ããã±ã¼ã·ã§ã³ãªã¹ãã ã£ãå ´å㯠1 ã§ãã |
quickfix |
ãã®ã¦ã£ã³ãã¦ã quickfix ã¦ã£ã³ãã¦ã ã£ãå ´å㯠1 ã§ãã |
tabnr |
ã¦ã£ã³ãã¦ãããã¿ããã¼ã¸ã®ã¿ããã¼ã¸çªå·ã§ãã |
variables |
ã¦ã£ã³ãã¦ãã¼ã«ã«å¤æ°ãåç §ããè¾æ¸ã§ãã |
width |
ã¦ã£ã³ãã¦ã®å¹ ã§ãã |
winid |
ã¦ã£ã³ã㦠ID ã§ãã |
winnr |
ã¦ã£ã³ãã¦çªå·ã§ãã |
弿°ã«ã¦ã£ã³ã㦠ID ãæ¸¡ããå ´åã¯ãæå®ããã¦ã£ã³ã㦠ID ã®æ å ±ã®ã¿ãå«ãé åãåå¾ã§ãã¾ãã
gettabinfo([{arg}])
ã¿ããã¼ã¸ã®æ å ±ãè¾æ¸ã®é åã§åå¾ãã¾ãã弿°ãä¸ããªãå ´åãå ¨ã¦ã®ã¿ããã¼ã¸ã®ã¦ã£ã³ãã¦ã®æ å ±ãåå¾ãã¾ãã é åã®åè¦ç´ ã®è¾æ¸ã¯ã以ä¸ã®ã¨ã³ããªã¼ãæã£ã¦ãã¾ãã
| ãã¼ | 説æ |
|---|---|
tabnr |
ã¿ããã¼ã¸çªå·ã§ãã |
variables |
ã¿ããã¼ã¸ãã¼ã«ã«å¤æ°ãåç §ããè¾æ¸ã§ãã |
windows |
ã¿ããã¼ã¸ã§è¡¨ç¤ºããã¦ããã¦ã£ã³ãã¦ã®ã¦ã£ã³ã㦠ID ã®ãªã¹ãã§ãã |
弿°ã«ã¿ããã¼ã¸çªå·ã渡ããå ´åã¯ãæå®ããã¿ããã¼ã¸çªå·ã®æ å ±ã®ã¿ãå«ãé åãåå¾ã§ãã¾ãã
getcharsearch() setcharsearch({dict})
æåæ¤ç´¢ã®æ
å ±ãåå¾ãè¨å®ã§ãã¾ããæåæ¤ç´¢ã¨ã¯ãf F t T ã§è¡ããæå®ããæåããã®æåã«é£ã¶æ©è½ã®ãã¨ã§ãã
æåæ¤ç´¢ã®æ
å ±ãæã¤è¾æ¸ãåå¾ãããã³è¨å®ã§ãã¾ãããã®è¾æ¸ã¯ä»¥ä¸ã®è¦ç´ ãæã¡ã¾ãã
| key | 説æ |
|---|---|
char |
æ¤ç´¢æåã§ãã空æååã«ããã¨ãæåæ¤ç´¢ãè§£é¤ãã¾ãã |
forward |
æ¤ç´¢æ¹åã§ãã1 ãªãã°åæ¹ã0 ãªãã°å¾æ¹ã§ãã |
untill |
æ¤ç´¢ã®ç¨®é¡ã§ãã1 ã®å ´åã¯ãæåã®æå(t ã T)ã0 ã®å ´åã¯æåèªä½(f ã F) ã®æ¤ç´¢ã§ãã |
getcmdwintype()
getcmdtype() ã®ã³ãã³ãã©ã¤ã³ã¦ã£ã³ãã¦çã§ãã
q: q/ q? ã§ã³ãã³ãã©ã¤ã³ã¦ã£ã³ãã¦ãéãã¦ããæã«ãç¾å¨ã®ã³ãã³ãã©ã¤ã³ã¦ã£ã³ãã¦ãã©ã®ã¿ã¤ãããè¿ãã¾ããæ»ãå¤ã¯ : / ? ã®ããããã§ãã³ãã³ãã©ã¤ã³ã¦ã£ã³ãã¦ãéããã¦ããªãå ´åã¯ç©ºæååãè¿ãã¾ãã
getcompletion({pat}, {type} [, {filtered}])
ã³ãã³ãã©ã¤ã³ã®è£å®ã®çµæãåå¾ã§ãã¾ãã{type} ã¯ä»¥ä¸ã®ãã¡ã®ã©ããã§ãã
{type} |
説æ |
|---|---|
augroup |
autocmd ã®ã°ã«ã¼ãåã§ãã |
buffer |
ãããã¡åã§ãã |
behave |
:behave Ex ã³ãã³ãã®å¼æ°ã§ãã |
color |
ã«ã©ã¼ã¹ãã¼ã ã§ãã |
command |
Ex ã³ãã³ãã§ãã |
compiler |
:compiler Ex ã³ãã³ãã®å¼æ°ã§ãã |
cscope |
:cscope Ex ã³ãã³ãã®å¼æ°ã§ãã |
dir |
ãã£ã¬ã¯ããªåã§ãã |
environment |
ç°å¢å¤æ°ã§ãã |
event |
autocmd ã®ã¤ãã³ãåã§ãã |
expression |
Vim ã®å¼ã§ãã |
file |
ãã¡ã¤ã«åã¨ãã£ã¬ã¯ããªåã§ãã |
file_in_path |
'path' ã«ãããã¡ã¤ã«åã¨ãã£ã¬ã¯ããªåã§ãã |
filetype |
ãã¡ã¤ã«ã¿ã¤ãã®ååã§ãã |
function |
颿°åã§ãã |
help |
help ã®é ç®ã§ãã |
highlight |
ãã¤ã©ã¤ãã°ã«ã¼ãã§ãã |
history |
:history Ex ã³ãã³ãã®å¼æ°ã§ãã |
locale |
ãã±ã¼ã«ã®åå(locale -a ã®åºå)ã§ãã |
mapping |
ãã¼ãããã³ã°ã®ååã§ãã |
menu |
ã¡ãã¥ã¼ã§ãã |
option |
ãªãã·ã§ã³ã§ãã |
shellcmd |
ã·ã§ã«ã³ãã³ãã§ãã |
sign |
:sign Ex ã³ãã³ãã®å¼æ°ã§ãã |
syntax |
syntax ãã¡ã¤ã«ã®ãã¡ã¤ã«åã§ãã |
syntime |
:syntime Ex ã³ãã³ãã®å¼æ°ã§ãã |
tag |
tags ãã¡ã¤ã«ããèªã¿åããã¿ã°ã§ãã |
tag_listfiles |
tag ã¨åãã§ãã |
user |
ã¦ã¼ã¶ã¼åã§ãã |
var |
Vim script ã®å¤æ°ã§ãã |
{pat} ã§åè£ãçµãè¾¼ãã¾ããã³ãã³ãã©ã¤ã³ã«å
¥åããã¦ããæååãæ¸¡ãã¾ãã
{filtered} ã« 1 ãæ¸¡ãã¨ã'wildignore' ãªãã·ã§ã³ãçµæã«é©ç¨ãã¾ãã
arglistid([{winnr} [, {tabnr}]])
Vim ã«ã¯å¼æ°ãªã¹ãã¨ããæ©è½ãããã¾ããããã¯ã°ãã¼ãã«ãªãã®ã 1 ã¤ãããããã¨ã¯å¥ã«ã¦ã£ã³ãã¦æ¯ã«ãã¼ã«ã«ãªãã®ã使ã§ãã¾ãã 弿°ãªã¹ãã®ä½¿ãæ¹ã«ã¤ãã¦ã¯ããã§ã¯çç¥ãã¾ããããã®é¢æ°ã¯ãã®å¼æ°ãªã¹ãã® ID ãåå¾ã§ãã¾ãã æå®ããã¦ã£ã³ãã¦ã«ãã¼ã«ã«ãªå¼æ°ãªã¹ãããªããã°ãã¼ãã«ãªãã®ã使ç¨ããã¦ããå ´å㯠0 ãè¿ãã¾ãã弿°ãç¡å¹ã ã£ãå ´å㯠-1 ãè¿ãã¾ãã
Vim 8.0 Advent Calendar 19 æ¥ç® æ°ãã颿° ï½ç¹æ®æä½ç·¨ï½
颿°ç´¹ä»ç·¨ã®æå¾ã§ããç¹æ®ãªæä½ããããã®ãããã®ä»éå¤ãªé¢æ°ãç´¹ä»ãã¾ãã
uniq({list} [, {func} [, {dict}]])
é
åå
ã®é£ç¶ããåãè¦ç´ ãåé¤ãã¾ãã
å
¨ä½ããéè¤ãåé¤ãããå ´åã¯äºåã« sort() 颿°ã使ãå¿
è¦ãããã¾ãã
let new_uniq_list = uniq(sort(copy(list)))
æ¯è¼ã«ã¯ããã©ã«ãã§æåå表ç¾ã使ãã¾ãã{func} ã {dict} ãä¸ãããã¨ã§ãsort() 颿°ã¨åæ§ã«æ¯è¼æ¹æ³ãæå®ãããã¨ãå¯è½ã§ãã
execute({command} [, {silent}])
Ex ã³ãã³ã {command} ãå®è¡ããã³ãã³ãã©ã¤ã³ã¸ã®åºåãçµæã¨ãã¦è¿ãã¾ãã
{command} ã¯æååããæååã®é
åã§ãã
{silent} 㯠"" "silent" "silent!" ã®ããããã§ãã³ãã³ãã®ãã¬ãã£ãã¯ã¹ã®ããã«ä½¿ããã¾ããããã©ã«ã㯠"silent" ã§ãã
echo filter(split(execute('scriptnames'), "\n"), { i, line -> line =~# '^\s*1:' }) " => 1: ~/.vim/vimrc
Ex ã³ãã³ãã®å®è¡ä¸ã« :redir Ex ã³ãã³ãã使ããã¨ã¯ã§ãã¾ããã
matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]])
matchadd() 颿°ã®ããã«ã¦ã£ã³ãã¦å
ã«ãã¤ã©ã¤ãã追å ãã¾ãããmatchadd() 颿°ã¯ãã¿ã¼ã³ãæå®ããã®ã«å¯¾ããmatchaddpos() 颿°ã¯ä½ç½®ãæå®ãã¾ãã
{pos} ã«ã¯ä½ç½®ã®ãªã¹ããæå®ãã¾ããä½ç½®ã¯ä»¥ä¸ã®ãã¡ã®ããããã§ãã
| å | 説æ |
|---|---|
| æ°å¤ | è¡çªå·ã§ããè¡å ¨ä½ã強調表示ãã¾ãã |
| æ°å¤ã 1 ã¤æã£ããªã¹ã | è¡çªå·ã§ããè¡å ¨ä½ã強調表示ãã¾ãã |
| æ°å¤ã 2 ã¤æã£ããªã¹ã | è¡çªå·ã¨ããã®è¡ã®æ¡ã§ããåä½ã¯ãã¤ãã§ãæå®ããæåã強調表示ãã¾ãã |
| æ°å¤ã 3 ã¤æã£ããªã¹ã | è¡çªå·ãæ¡ãæååé·(ãã¤ãåä½)ã§ãã |
ä¸åº¦ã«æå®ã§ããä½ç½®ã¯ 8 åã¾ã§ã§ãã
setfperm({fname}, {mode})
ãã¡ã¤ã«ã®ãã¼ããã·ã§ã³ãè¨å®ãã¾ãã{mode} 㯠getfperm() 颿°ã®æ»ãå¤ã¨åæ§ã®ãã©ã¼ãããã§ããã"rwxrwxrwx" å½¢å¼ã§æå®ãã¾ãã
systemlist({expr} [, {input}])
system() 颿°ã¨åæ§ã§ãããæ»ãå¤ã¯è¡åä½ã®ãªã¹ãã«ãªãã¾ããæ»ãå¤å
ã® NULL æå(\0)ã¯æ¹è¡æåã«å¤æããã¾ãã
ããã«ãããçµæã« NULL æåãå«ã¾ãã¦ãã³ãã³ãã®çµæãåå¾ã§ãã¾ãã
perleval({expr})
if_perl ã使ã£ã¦ Perl ã®å¼ãè©ä¾¡ããçµæã Vim ã®ãã¼ã¿å½¢å¼ã«å¤æãã¦è¿ãã¾ãã
ãã㯠pyeval() 颿°ã luaeval() 颿°ã® Perl çã§ãã
echo perleval('{"foo" => "bar"}') " => {'foo': 'bar'}
exepath({expr})
å®è¡ã³ãã³ãã®ãã«ãã¹ãåå¾ãã¾ãã絶対ãã¹ãç¸å¯¾ãã¹ã$PATH ã®ä¸ã«åå¨ãããã¡ã¤ã«ãå®è¡ãã¡ã¤ã«ã ã£ãå ´åããã®ãã«ãã¹ãè¿ãã¾ãã
echo exepath('git') " => /usr/bin/git
isnan({expr})
{expr} ã NaN å¤ã§ããããå¤å®ãã¾ãã
echo isnan(0.0 / 0.0) " => 1
reltimefloat({time})
reltime() 颿°ã®çµéæéã®æ»ãå¤ãç§æ°ã® Float å¤ã«å¤æãã¾ãã
let start = reltime() sleep 1 echo reltimefloat(reltime(start)) " => 1.000287
以åããçµéæéãæååã«å¤æãã reltimestr() 颿°ãããã¾ãããããã¡ãã¯æååã§ããããã¤å
é ã«ç©ºç½ãå«ã¾ãã¦ããããã表示以å¤ã®ç®çã§ä½¿ãã«ã¯å°ã
æ±ãã¥ããã¨ããåé¡ãããã¾ãããreltimefloat() 颿°ã使ããã¨ã§ç´æ¥ Float å¤ãå¾ããããããå¹³åã®è¨ç®ãªã©ãããããããªãã¾ãã
Vim 8.0 Advent Calendar 20 æ¥ç® æ°ããã¤ãã³ã
Vim 8.0 ã§ã¯ autocmd ã¤ãã³ããæ°ãã追å ããã¦ãã¾ãã
TabNew
æ°ããã¿ããã¼ã¸ãéãããéã«çºçãã¾ããä¾ãã° :tabnew Ex ã³ãã³ãã使ãã¨ã以ä¸ã®é çªã§ã¤ãã³ããçºçãã¾ãã
- WinLeave
- TabLeave
- WinNew
- WinEnter
- TabNew
- TabEnter
TabClosed
ã¿ããã¼ã¸ãéããããéã«çºçãã¾ããä¾ãã°ã:tabclose Ex ã³ãã³ãã§ã«ã¬ã³ãã¿ããã¼ã¸ãéããã¨ã以ä¸ã®é çªã§ã¤ãã³ããçºçãã¾ãã
- BufLeave
- WinLeave
- TabLeave
- TabClosed
- WinEnter
- TabEnter
- BufEnter
WinNew
æ°ããã¦ã£ã³ãã¦ã使ãããéã«çºçãã¾ããVim èµ·åæã«éãããã¦ã£ã³ãã¦ã«å¯¾ãã¦ã¯çºçãã¾ããã
CmdUndefined
å®ç¾©ããã¦ããªãã¦ã¼ã¶ã¼å®ç¾©ã³ãã³ããå®è¡ãããã¨ããéã«çºçãã¾ãã
ãã¿ã¼ã³ã¯ã³ãã³ãåã«å¯¾ãã¦ãããã³ã°ãè¡ããã<amatch> 㨠<afile> ã¯å®è¡ãããã¨ããã¦ã¼ã¶ã¼å®ç¾©ã³ãã³ãåã«è¨å®ããã¾ãããããã<amatch> ã¯æ£ããå±éãããªããããªã®ã§ã<afile> ã使ãã®ãããã§ãããã
ã¤ãã³ãã®å®è¡ä¸ã«åå¨ããªãã£ãã³ãã³ããå®ç¾©ããã°ãã¤ãã³ãçµäºå¾ã«ã³ãã³ããå®è¡ããã¾ãã
以ä¸ã®ä¾ã¯ãFoo ã§å§ã¾ãæªå®ç¾©ã® Ex ã³ãã³ããå®è¡ããã¨ããã®å ´ã§èªåèªèº«ã®ã³ãã³ãåãåºåãã Ex ã³ãã³ããå®ç¾©ãã¾ãã
augroup example autocmd! autocmd CmdUndefined Foo* execute 'command! -nargs=*' expand('<afile>') 'echo' string(expand('<afile>')) augroup END FooBar " => FooBar
OptionSet
ãªãã·ã§ã³ãè¨å®ãããéã«çºçãã¾ãã
ãã¿ã¼ã³ã¯ã常ã«ç縮ãã¦ããªããªãã·ã§ã³åã«å¯¾ãã¦ãããã³ã°ãè¡ããã<amatch> ã«ã¯ãªãã·ã§ã³åãè¨å®ããã¾ãã
ã¾ãã以ä¸ã®çµã¿è¾¼ã¿å¤æ°ã«è¨å®ããããªãã·ã§ã³ã®å¤ã®æ
å ±ãæ ¼ç´ããã¾ãã
| çµã¿è¾¼ã¿å¤æ°å | 説æ |
|---|---|
v:option_old |
夿´åã®ãªãã·ã§ã³ã®å¤ã§ãã |
v:option_new |
夿´å¾ã®ãªãã·ã§ã³ã®å¤ã§ãã |
v:option_type |
è¨å®ããã夿°ã®ã¹ã³ã¼ãã§ããglobal ã local ãå
¥ãã¾ãã |
'key' ãªãã·ã§ã³ã®å ´åã¯ãã»ãã¥ãªãã£ã®ããã¤ãã³ãã¯çºçãã¾ããã
TextChanged
ãã¼ãã«ã¢ã¼ãã§ã«ã¬ã³ããããã¡ã®ããã¹ãã夿´ãããéã«çºçãã¾ãããã®ã¨ããb:changedtick ãæ´æ°ããã¾ãã
ãã®ã¤ãã³ãã¯ãããªãã®é »åº¦ã§çºçãã¾ããéãå¦çãè¡ãå ´åã¯ååæ³¨æãã¹ãã§ãã
TextChangedI
æ¿å ¥ã¢ã¼ãã§ã«ã¬ã³ããããã¡ã®ããã¹ãã夿´ãããéã«çºçãã¾ãããã ããè£å®ã®ãããã¢ããã¡ãã¥ã¼ã表示ããã¦ããã¨ãã¯çºçãã¾ããã ãã®ã¤ãã³ãã¯é常ã«é »ç¹ã«çºçãããã¨ã«æ°ãä»ãã¦ãã ãããéãå¦çãè¡ãã¨ãã¦ã¼ã¶ã¼ä½é¨ãèããæãªããã¾ãã
Vim 8.0 Advent Calendar 21 æ¥ç® æ°ããçµã¿è¾¼ã¿å¤æ°
ä»åã¯æ°ãã追å ãããçµã¿è¾¼ã¿å¤æ°ãç´¹ä»ãã¾ãã
ã¿ã¤ãã表ã宿°
type() 颿°ã使ãã¨ã夿°ã®ã¿ã¤ããå¾ããã¨ãã§ãã¾ããããã§å¾ãããå¤ã¯æ°å¤ã§ãåã¿ã¤ãã«æ°å¤ãå²ãå½ã¦ããã¦ãã¾ãã
ãã夿°ãç¹å®ã®ã¿ã¤ãã§ãããã©ãããå¤å®ãããå ´åãä»ã¾ã§ã¯ä»¥ä¸ã®ããã«ãã¦ãã¾ããã
" 以ä¸ã®ä¾ã§ã¯å¤æ° var ãæååãã©ãããå¤å®ãã¦ãã¾ãã " æååã® type ã®å¤ã¯ 1 ãªã®ã§ãããã¨æ¯è¼ãã¦å¤å®ãã¾ãã if type(var) == 1 endif " ãã¸ãã¯ãã³ãã¼ãé¿ããããã以ä¸ã®ããã«ãããã¨ãå¤ãã§ãã if type(var) == type('') endif
ãã®æ¹æ³ã«ã¯ã以ä¸ã®ãããªåé¡ãããã¾ããã
- è¥å¹²ããªããã¼ã§ãæ £ããªãã¨çè§£ãã¥ããã³ã¼ãã«ãªãã¾ãã
type()颿°ãä½è¨ã«å¼ã¶ããããªã¼ãã¼ããããããã¾ãã- 颿°åç
§ã®å ´åã¯
type(function('type'))ã®ããã«ãªããé·ãä¸ã«function()颿°ã«æ¸¡ã颿°åã人ã«ãã£ã¦ãã©ãã©ã§çµ±ä¸æãããã¾ããã - æ°ãã追å ããã
jobåãªã©ã®å¤ã¯æ°è»½ã«çæã§ãã¾ããã
ããã§ãtype() 颿°ã®æ»ãå¤ã表ã宿°ãæ°ãã«è¿½å ããã¾ããã以ä¸ã®è¡¨ã宿°ã®ä¸è¦§ã§ãã
| å | 宿° | 宿°ã®å¤ | åã®å¤ã®ä¾ |
|---|---|---|---|
| æ°å¤ | v:t_number |
0 | 10 |
| æåå | v:t_string |
1 | 'foo' |
| 颿°åç § | v:t_func |
2 | function('type') |
| ãªã¹ã | v:t_list |
3 | [0, 1, 2] |
| è¾æ¸ | v:t_dict |
4 | {'one': 1} |
| æµ®åå°æ°ç¹æ° | v:t_float |
5 | 1.23 |
| çå½å¤ | v:t_bool |
6 | v:true v:false |
| ç¹æ®å¤ | v:t_none |
7 | v:null v:none |
| ã¸ã§ã | v:t_job |
8 | job_start(cmd) |
| ãã£ã³ãã« | v:t_channel |
9 | ch_open(host) |
v:completed_item
è£å®ããã対象ã表ã夿°ã§ãã
以åã¾ã§ã¯ãCompleteDone ã¤ãã³ãã«ããè£å®ã®å®äºãç¥ããã¨ã¯ã§ãã¾ããããã©ã®åè£ã鏿ãããããç¥ããã¨ãã§ãã¾ããã§ãããæ°ãã追å ããããã®å¤æ°ãåç
§ãããã¨ã§ãã©ã®åè£ã鏿ãããã®ããããã¾ãã
鏿ãããåè£ã¯è¾æ¸ã§ãã詳ããæ§é ã«ã¤ãã¦ã¯ :help complete-items ã§èª¬æããã¦ãã¾ããè£å®ã«å¤±æããå ´åã¯ç©ºã®è¾æ¸ã«ãªãã¾ãã
v:hlsearch
æ¤ç´¢ã«ãã強調表示ãè¡ããã¦ãããã表ã夿°ã§ãã
æ¤ç´¢ã®ãã¤ã©ã¤ã㯠'hlsearch' ãªãã·ã§ã³ããªã³ã«ãã¦æ¤ç´¢ãè¡ããã¨ã§è¡ããã¾ããã:nohlsearch Ex ã³ãã³ãã使ããã¨ã§ã䏿çã«ãã¤ã©ã¤ããç¡å¹ã«ã§ãã¾ãããã®ã¨ã 'hlsearch' ãªãã·ã§ã³ã®å¤ã¯ãã®ã¾ã¾ãªã®ã§ããã¤ã©ã¤ããè¡ããã¦ããã®ãã:nohlsearch Ex ã³ãã³ãã§æ¶ããã¦ããã®ããä»ã¾ã§ã¯ãããã¾ããã§ããã
v:hlsearch 夿°ã¯ããã¤ã©ã¤ããè¡ããã¦ããæã¯ 1ãè¡ããã¦ããªãæã¯ 0 ã«ãªãã¾ãã
ã¾ããå¤ãæ¸ãæãããã¨ã§ãã¤ã©ã¤ãã®ç¶æ
ã夿´ã§ãã¾ãããã ãã'hlsearch' ãªãã·ã§ã³ããªãã®å ´åã¯ãã¤ã©ã¤ããæå¹ã«ã§ããªãããã1 ãå
¥ãã¦ãå¤ã¯ 0 ã®ã¾ã¾ã§ããã¨ã©ã¼ãçºçãã¾ããã
ã¾ãã颿°ã®å¼ã³åºãã¯ãæå¾ã«ä½¿ç¨ãããæ¤ç´¢ãã¿ã¼ã³ãä¿åãã¦å¼ã³åºãçµäºå¾ã«ãªã¹ãã¢ãã¾ããã¤ã¾ã颿°å
ã§ãã®å¤æ°ãæ¸ãæãã¦ãã颿°ã®çµäºæã«å¾©å
ããã¦ãã¾ãã®ã§æ³¨æãã¦ãã ããã
v:progpath
Vim ãèµ·åããéã®ã³ãã³ãã示ãæååã§ããã¤ã¾ããVim ã³ãã³ãèªèº«ã®ã³ãã³ãã©ã¤ã³å¼æ°ã® 0 çªç®ã§ãã ã·ã¹ãã ã«è¤æ°ã® Vim ãããå ´åã«ãã©ã® Vim ã§èµ·åããããã®ãã³ãã«ãªãã¾ããVim å ããå¥ã® Vim ãèµ·åãã¦å¦çãè¡ãããå ´åãªã©ã«ä¾¿å©ã§ãã
echo exepath(v:progpath)
ã³ãã³ããç¸å¯¾ãã¹ã§ã«ã¬ã³ããã£ã¬ã¯ããªãç§»åããå ´åãã$PATH ã夿´ãããå ´åãªã©ã確å®ã«èµ·åãã Vim ãå¾ãããããã§ã¯ãªãç¹ã«æ³¨æãã¦ãã ããã
v:vim_did_enter
Vim ãèµ·åãã¦ãVimEnter ã¤ãã³ããçºçããç´åã¾ã§ã¯ 0 ã§ããVimEnter ã¤ãã³ããçºçããç´åã« 1 ã«ãªãã¾ãã
ä¼¼ããããªå¤ã« has('vim_starting') ãããã¾ãããã¡ãã®å¤ã¯éã§ãèµ·åä¸ã¯ 1ãèµ·åå¾ã¯ 0 ã«ãªãã¾ããå¤ãå¤ããã¿ã¤ãã³ã°ã¯ v:vim_did_enter ã¨åãã§ãã両è
ã¯å®å
¨ã«ä»£æ¿å¯è½ã§ãã
ã§ã¯ãªããã®å¤æ°ã追å ãããã®ãã¨è¨ãã¨ãå®ã¯ããã追å ããéãBram ãã㯠has('vim_starting') ã®åå¨ãå®å
¨ã«å¿ãã¦ãã¾ããããã¨ã§ææãããéããã®å¤æ°ã®è¿½å ããªãã¼ããããã¨ãæ¤è¨ããããã§ãã
ããããhas() 颿°ã¯åºæ¬çã« Vim ã®ã³ã³ãã¤ã«æã«çµã¿è¾¼ã¾ãã¦ããæ©è½ã調ã¹ãããã®ãã®ã§ãä¸é¨ã®ä¾å¤ãé¤ã Vim å®è¡ä¸ã«å¤ãå¤åããªããã¨ããã®ãããªæ
£ç¿ã®ãããVim ãèµ·åä¸ãã©ããã調ã¹ãæ¹æ³ã has() 颿°ã«ãããã¨ã¯ã¦ã¼ã¶ã¼ã«ã¨ã£ã¦ãããã¥ãããã¨ãªã©ã Gary ããã«ææãããæ®ããã¨ã«ãªã£ãããã§ãã
Vim 8.0 Advent Calendar 22 æ¥ç® æ°ããã¹ã¿ã¤ã«ã®ãã¹ã
Vim 8.0 ã§ã¯ãVim æ¬ä½ã®ãã¹ãã®ã¹ã¿ã¤ã«ãæ°ãããªãã¾ããã
æ°ãããã¹ãã®ãµã³ãã«
æ°ããã¹ã¿ã¤ã«ã®ãã¹ã㯠Vim æ¬ä½ã®ãã¹ãã®ããã«è¿½å ããããã®ã§ãããåºæ¬çã« Vim script ã®æ©è½ã§ããããããã©ã°ã¤ã³ã®ãã¹ãã«ãå©ç¨ã§ãã¾ãã 以ä¸ã«ãæ°ããã¹ã¿ã¤ã«ã§æ¸ãããç°¡åãªãã¹ãã³ã¼ãã示ãã¾ãã
" ãã¹ã対象ã®é¢æ° function! Add(a, b) abort return a:a + a:b endfunction " -------------------------- function! Test_Add() abort call assert_equal(5, Add(2, 3)) endfunction function! s:run_test() abort let v:errors = [] call Test_Add() if empty(v:errors) echo 'Test Passed!' else echo 'Test Failed!' for error in v:errors echo error endfor endif endfunction call s:run_test()
å®è¡ããã¨ã以ä¸ã®ããã«ãã¹ãããã¹ãã¾ãã
Test Passed!
ãã¹ãã«å¤±æããä¾ã示ãã¾ããTest_Add() 颿°ã以ä¸ã®ããã«æ¸ãæãã¾ãã
function! Test_Add() abort call assert_equal(10, Add(2, 3)) endfunction
å®è¡ããã¨ã以ä¸ã®ããã«ãã¹ãã«å¤±æãã¾ãã
Test Failed! function <SNR>1_run_test[3]..Test_Add line 1: Expected 10 but got 5
ãã¹ãã®ä»çµã¿
以ä¸ã®ä¾ããè¦ã¦åããã®ã¯ 2 ç¹ã§ãã
- å¤ã®ãã§ãã¯ã«ä½¿ã£ã¦ãã
assert_equal()颿° - ãã¹ãã®çµæã®ãã§ãã¯ã«ä½¿ã£ã¦ãã
v:errorsçµã¿è¾¼ã¿å¤æ°
æ°ãããã¹ãã§ã¯ããããã使ã£ã¦ãã¹ããæ¸ãã¾ãã
ä»çµã¿ã¯åç´ã§ããv:errors çµã¿è¾¼ã¿å¤æ°ã¯é
åã§ããassert_ ã§å§ã¾ãã¢ãµã¼ãç³»ã®é¢æ°ãå¼ã³åºããã¢ãµã¼ãã«å¤±æããã¨ããã® v:errors ã«å¤±æã®ã¡ãã»ã¼ã¸ã追å ããã¾ãã
ä¾ã§è¡ã£ã¦ããããã«ããã¹ãéå§åã« v:errors ã空ã«ããããã¤ãã®ã¢ãµã¼ãç³»ã®å¼ã³åºãããã¨ãæå¾ã« v:errors ã®ä¸èº«ã確èªãããã¨ã§ãã¹ããè¡ãã¾ãã
ã¢ãµã¼ãç³»é¢æ°
追å ãããã¢ãµã¼ãç³»ã®é¢æ°ãç´¹ä»ãã¾ãã
ã»ã¨ãã©ã®é¢æ°ã¯ {msg} 弿°ãæã£ã¦ããããããæ¸¡ããã¨ã§ v:errors ã«å
¥ãã¡ãã»ã¼ã¸ãæå®ã§ãã¾ããçç¥ããå ´åã¯é¢æ°æ¯ã«ç¨æãããã¡ãã»ã¼ã¸ã使ç¨ããã¾ãã
assert_equal({expected}, {actual} [, {msg}])
{actual} ã {expected} ã¨çããäºããã¹ããã¾ããåã®èªå夿ã¯è¡ããã¾ããã
assert_notequal({expected}, {actual} [, {msg}])
{actual} ã {expected} ã¨çãããªãäºããã¹ããã¾ãã
assert_inrange({lower}, {upper}, {actual} [, {msg}])
{actual} ã {lower} ä»¥ä¸ {upper} 以ä¸ã®æ°å¤ã§ããäºããã¹ããã¾ãã
assert_match({pattern}, {actual} [, {msg}])
{actual} ãæ£è¦è¡¨ç¾ {pattern} ã«ãããããäºããã¹ããã¾ãã
assert_notmatch({pattern}, {actual} [, {msg}])
{actual} ãæ£è¦è¡¨ç¾ {pattern} ã«ãããããªãäºããã¹ããã¾ãã
assert_true({actual} [, {msg}])
{actual} ã TRUE ã§ããäºããã¹ããã¾ããããã§ã® TRUE ã¯ãéã¼ãã®æ°å¤ããv:true ã§ãããã以å¤ã®åãå¤ã®å ´åã¯å¤±æãã¾ãã
assert_false({actual} [, {msg}])
{actual} ã FALSE ã§ããäºããã¹ããã¾ããããã§ã® FALSE ã¯ãã¼ãã®æ°å¤ããv:false ã§ãããã以å¤ã®åãå¤ã®å ´åã¯å¤±æãã¾ãã
assert_exception({error} [, {msg}])
v:exception ã«æåå {error} ãå«ã¾ãã¦ããäºããã¹ããã¾ãã
assert_fails({cmd} [, {error}])
{cmd} ãå®è¡ããçµæãã¨ã©ã¼ãçºçããäºããã¹ããã¾ãã{error} ãæ¸¡ãããå ´åãv:errmsg ã«æ ¼ç´ããã¦ããçºçããã¨ã©ã¼ã¡ãã»ã¼ã¸ã«æåå {error} ãå«ã¾ãã¦ããäºããã¹ããã¾ãã
ãã®ä»ã®ãã¹ãç¨é¢æ°
assert 系以å¤ã§è¿½å ããããã¹ããè£å©ãã颿°ã§ãããã ããã»ã¨ãã©ã®é¢æ°ã¯ Vim æ¬ä½ã®ãã¹ãã®ããã®ãã®ã§ããç°¡åã«ç´¹ä»ãã¾ãã
| ãã¹ãç¨é¢æ° | 説æ |
|---|---|
test_alloc_fail({id}, {countdown}, {repeat}) |
ã¡ã¢ãªã®ç¢ºä¿ãå¼·å¶çã«å¤±æããã¾ãã |
test_autochdir({expr}) |
èµ·åä¸ã« 'autochdir' ãæå¹ã«ãã¾ãã |
test_disable_char_avail() |
typeahead ãªãã®ç¶æ ã§ãã¹ããã¾ãã |
test_garbagecollect_now() |
ç´ã¡ã«ã¡ã¢ãªãè§£æ¾ãã¾ãã |
test_null_channel() |
null ã®ãã£ã³ãã«ãè¿ãã¾ãã |
test_null_dict() |
null ã®è¾æ¸ãè¿ãã¾ãã |
test_null_job() |
null ã® Job ãè¿ãã¾ãã |
test_null_list() |
null ã®ãªã¹ããè¿ãã¾ãã |
test_null_partial() |
null ã®é¨åé©ç¨é¢æ°ãè¿ãã¾ãã |
test_null_string() |
null ã®æååãè¿ãã¾ãã |
test_settime({expr}) |
Vim ã使ãå 鍿éã夿´ãã¾ãã |
Vim 8.0 Advent Calendar 23 æ¥ç® éå¤ãªå¤æ´
ä»åã¯ãä»ã¾ã§ã®å¤æ´ã«åã¾ããªãã£ãç´°ãã夿´ç¹ã«ã¤ãã¦è¦ã¦ããã¾ãã
GTK+ 3
GUI ã¨ãã¦ãGTK+ 3 ã«å¯¾å¿ãã¾ãããGTK+ 2 ã¨åãããã«ä½¿ãã¾ãã
+num64
Vim script ã®æ´æ°ã®åã 64 bit ã«ãªãã¾ããã
å©ç¨å¯è½ãªç°å¢ã§ããã° 64 bit ã«ãªããã¨ã«ãªã£ã¦ãã¾ãããåºæ¬çã«ã¯ä¸è¬çãªã»ã¼å
¨ã¦ã®ç°å¢ã§ã¯å©ç¨å¯è½ãã¨æãã¾ãã
has('num64') ã使ããã¨ã§ã64 bit ãæå¹ãã©ãããå¤å®ã§ãã¾ãã
if has('num64') echo 1000000000000000000 " => 1000000000000000000 endif
ããã«ããã32 bit ã«ããæ¡æº¢ããªã©ãå©ç¨ãã¦ããä¸é¨ã®ãã©ã°ã¤ã³ããã¾ãåä½ããªããªãå¯è½æ§ãããã¾ãã
ã¦ã¼ã¶ã¼å®ç¾©ã³ãã³ãã§ã®æ°ããç½®ãæãããã¹ã <mods>
Vim ã® Ex ã³ãã³ãã®ä¸ã«ã¯ãä»ã® Ex ã³ãã³ãã«åç½®ãããã¨ã§ä»ã®ã³ãã³ãã修飾ãããã®ãããã¾ãã:aboveleft ã :hide ãªã©ãããã§ããããã¯ã³ãã³ã修飾åã¨å¼ã°ãã¾ãã
ããã¾ã§ã¯ãã¦ã¼ã¶ã¼å®ç¾©ã³ãã³ãã«å¯¾ãã¦ã³ãã³ã修飾åãæå®ããã¦ãããã®åå¨ãç¥ããã¨ã¯ã§ãã¾ããã§ãããããã§è¿½å ãããã®ã <mods> ã§ãã
以ä¸ã®ããã« <mods> ã使ããã¨ã§ãæå®ããã修飾ã³ãã³ãã®åå¨ãç¥ããã¨ãã§ãã¾ãã
command! ShowMods echo split(<q-mods>) ShowMods " => [] aboveleft ShowMods " => ['aboveleft'] hide leftabove ShowMods " => ['aboveleft', 'hide']
æå®ãããé åºã«é¢ä¿ãªããæ±ºããããé åºã§ <mods> ã«å
¥ãã¾ãã対å¿ãã¦ããã³ãã³ã修飾åã¯ä»¥ä¸ã§ãã
:aboveleft:leftabove- ã©ã¡ããåãæå³ã®ã³ãã³ãã§ãã©ã¡ããæå®ããã¦ã
aboveleftãå¾ããã¾ãã
- ã©ã¡ããåãæå³ã®ã³ãã³ãã§ãã©ã¡ããæå®ããã¦ã
:belowright:rightbelow- ã©ã¡ããåãæå³ã®ã³ãã³ãã§ãã©ã¡ããæå®ããã¦ã
belowrightãå¾ããã¾ãã
- ã©ã¡ããåãæå³ã®ã³ãã³ãã§ãã©ã¡ããæå®ããã¦ã
:botright:browse:confirm:hide:keepalt:keepjumps:keepmarks:keeppatterns:lockmarks:noswapfile:silent:tab:topleft:verbose:vertical
ã¾ãã以ä¸ã®ã³ãã³ã修飾åã«ã¯å¯¾å¿ãã¦ãã¾ããã
åãã§ãã¯ã®å»æ¢
以åã®ãã¼ã¸ã§ã³ã® Vim ã§ã¯ã夿°ã«å¯¾ãã¦ãå ããå ¥ã£ã¦ããå¤ã®åã«æé»ã«å¤æä¸å¯è½ãªåã®å¤ãä»£å ¥ãããã¨ããã¨ãã¨ã©ã¼ã«ãªã£ã¦ãã¾ããã
" Vim 7.4.1546 ããå let var = 10 let var = [] " => E706: 夿°ã®åãä¸è´ãã¾ãã: var
ããã¯å ã æå³çã«ãã§ãã¯ãè¡ããã¨ã©ã¼ã«ãªã£ã¦ããã®ã§ãããéçåä»ãè¨èªãªãã¨ããããåçåä»ãè¨èªã§ãã Vim script ã§ãããè¡ã£ã¦ãããããããã ãã§ãã£ãããããã®ãã§ãã¯ã¯ãªããªãã¾ããã
" Vim 7.4.1546 以é let var = 10 let var = [] " => ã¨ã©ã¼ãªã
printf('%s') ãå
¨ã¦ã®åãåãå
¥ãã
printf() 颿°ã®ãã©ã¼ãããæååã§ãã %s ã¯ãæååã表示ãã¾ãã以åã®ãã¼ã¸ã§ã³ã® Vim ã§ã¯ãæååã«æé»ã«å¤æã§ããªãå¤ã渡ãã¨ã¨ã©ã¼ã«ãªã£ã¦ãã¾ããã
" Vim 7.4.2220 ããå echo printf('%s', [1, 2, 3]) " => E730: ãªã¹ãåãæååã¨ãã¦æ±ã£ã¦ãã¾ã
ãããããã¯ãã¾ã便å©ã§ã¯ãªããããæåååã§ãªãå ´å㯠string() 颿°ãé©ç¨ããçµæã使ç¨ãããããã«å¤æ´ããã¾ããã
" Vim 7.4.2220 以é echo printf('%s', [1, 2, 3]) " => [1, 2, 3]
è¾æ¸ã®ãã¼ã«ç©ºæååã使ãã
以åã®ãã¼ã¸ã§ã³ã® Vim ã§ã¯ãè¾æ¸ã®ãã¼ã«ç©ºæååã使ãã¾ããã§ããã
" Vim 7.4.1707 ããå echo {'': 10} " => E713: è¾æ¸åã«ç©ºã®ãã¼ã使ããã¨ã¯ã§ãã¾ãã
ãããã空æååã許å¯ããªãç©æ¥µçãªçç±ã¯ãªãã空æååã使ããæ¹ã便å©ã§ããããããã¼ã«ç©ºæååã使ããããã«ãªãã¾ããã
" Vim 7.4.1707 以é echo {'': 10} " => {'': 10}
æ£è¦è¡¨ç¾ \%C
æ°ãã追å ãããæ£è¦è¡¨ç¾ã®ã¢ãã \%C ã使ãã¨ãåææåãã¹ããããããã¨ãã§ãã¾ãã
let s = 'e' . nr2char(0x301) echo s " => eÌ echo s =~# 'e' " => 0 echo s =~# 'e\%C' " => 1
ãã¤ã©ã¤ãã°ã«ã¼ã EndOfBuffer
æ°ãã追å ããããã¤ã©ã¤ãã°ã«ã¼ã EndOfBuffer ã¯ããã¡ã¤ã«ã®æ«å°¾ä»¥éã«è¡¨ç¤ºããã ~ ã®æåãããè¡ã®é¨åã®ãã¤ã©ã¤ãã«ãªãã¾ããæ¨æºã§ã¯ NonText ã¨åãããã«ãã¤ã©ã¤ãããã¾ãã
ä¾ãã°ä»¥ä¸ã®ããã«èæ¯è²ã¨åæ¯è²ãåãã«ãããã¨ã§ããã¡ã¤ã«æ«å°¾ä»¥éãå¡ãæ½°ããã¨ãã£ããã¨ãã§ãã¾ãã
highlight EndOfBuffer ctermfg=DarkGray ctermbg=DarkGray guifg=DarkGray guibg=DarkGray
ãµãã¼ããçµäºããç°å¢
以ä¸ã®ç°å¢ãæ©è½ã¯ã使ã£ã¦ãã人ãã»ã¼ããªãã大ãããªã£ã Vim ãåä½ããã®ã«ããããªããªã©ã®çç±ã«ãããVim ã®ã³ã¼ãã綺éºã«ä¿ã¤ããã«ãµãã¼ããçµäºãã¾ããã
- MS-DOS
- 16bit ã® Windows (Windows 95 ããã以å)
- OS/2
- SNiFF+
ãããã®ç°å¢ãæ©è½ã§ Vim ã使ãããå ´åã¯ãå¤ã Vim ã使ãå¿ è¦ãããã¾ãã
Vim 8.0 Advent Calendar 24 æ¥ç® å é¨çãªå¤æ´
ä»åã¯ãå©ç¨è ã«ã¯ãã¾ãå½±é¿ããªã Vim ã®éçºå´ã®å¤æ´ã«ã¤ãã¦ã§ãã
GitHub ã¸ç§»è¡
ç§»è¡å½æãå²ã¨å¤§ããåãä¸ãããã¦ããã®ã§ããåç¥ã®æ¹ãå¤ãã§ãããã ããã¾ã§ Vim ã¯ãGoogle Code ã§ Mercurial ã使ã£ã¦éçºããã¦ãã¾ãããããã Google Code ã®ãµã¼ãã¹çµäºã«ä¼´ãã2015 å¹´ 8 æã« Vim ã®ãªãã¸ããªã¯ GitHub ã¸ç§»è¡ããªãã¸ããªã Git ã«å¤æ´ããã¾ããã
ã¾ãã以å㯠Vim ã¸ã®ãããã®æç¨¿ã¯ vim_dev ã®ã¡ã¼ãªã³ã°ãªã¹ãä¸ã§ã®ã¿è¡ããã¦ãã¾ããããç¾å¨ã§ã¯ GitHub ä¸ã® Pull Request ã§ãåãä»ãã¦ãã¾ããè²¢ç®ã¸ã®æ·å± ãããªãä¸ãã£ãã¨è¨ãã¾ãã
å¤§è¦æ¨¡ãªã½ã¼ã¹ã³ã¼ãã®åå²
Vim ã¯é·ãæ´å²ããããããªã巨大ãªããã°ã©ã ã§ããã½ã¼ã¹ã³ã¼ããããªãã®éããããeval.c ãªã©ã¯ 2 ä¸è¡ãè¶
ãã¦ãã¾ããã
Vim ã®éçºã GitHub ã«ç§»ã£ãããªã©ãã¾ãã¾ãªå¤åãããä¸ã§ãã³ã¼ãã®ãã¹ãã«ãã¬ãã¸ã Coveralls ã§è¨æ¸¬ããããã«ãªãã¾ããã
ãããããã®æã«ãã®å·¨å¤§ãªã½ã¼ã¹ã³ã¼ããåé¡ã«ãªã£ãããã§ããããåé¿ããããã«ã½ã¼ã¹ã³ã¼ãã®åå²ãè¡ããã¾ããã
æ¦ãã以ä¸ã®ãããªåå²ãè¡ããã¾ããã
eval.c- â
eval.c - â
list.c - â
dict.c - â
evalfunc.c - â
userfunc.c
- â
spell.c- â
spell.c - â
spellfile.c
- â
ANSI-C ã¹ã¿ã¤ã«ã®é¢æ°å®ç¾©
Vim æ¬ä½ã®ã½ã¼ã¹ã³ã¼ãã¯ã以åã¾ã§ã¯ K&R ã¨å¼ã°ããã¹ã¿ã¤ã«ã§é¢æ°å®ç¾©ãè¡ã£ã¦ãã¾ããã以ä¸ã®ãããªå½¢å¼ã§ãã
/* * Add a watcher to a list. */ void list_add_watch(l, lw) list_T *l; listwatch_T *lw; { lw->lw_next = l->lv_watch; l->lv_watch = lw; }
颿°ã®å¼æ°é¨åã®ãåã®å®£è¨ãæ¬å¼§ã®å¤ã«æ¸ããã¦ãã¾ããC è¨èªãç¥ã£ã¦ãã人ã®ä¸ã§ãããããããã®ãããªæ¸ãæ¹ãã§ãããã¨èªä½ç¥ããªã人ãããã®ã§ã¯ãªãã§ããããã Vim ã®æ´å²ã¯å¤ãããã®ãããã®å¤ãæ¸ãæ¹ããã£ã¨ä½¿ããã¦ãã¾ããã ããããã®åº¦ãç¾ä»£ã§åºã使ããã¦ãã ANSI-C ã¹ã¿ã¤ã«ã®é¢æ°å®ç¾©ã«æ¸ãæãããã¾ããã以ä¸ã®ãããªå½¢å¼ã§ãã
/* * Add a watcher to a list. */ void list_add_watch(list_T *l, listwatch_T *lw) { lw->lw_next = l->lv_watch; l->lv_watch = lw; }
ãã¸ã¥ã¢ã«ã¢ã¼ããå¸¸ã«æå¹
Vim ã«ã¯å¤§ããåãã¦ãTinyãSmallãNormalãBigãHuge ã® 5 ã¤ã®ãã«ãããããå¾ã«ãªãã»ã©å¤ãã®æ©è½ãå«ã¾ããããã«ãªã£ã¦ãã¾ãã
ãã¸ã¥ã¢ã«ã¢ã¼ã(+visual æ©è½)ã¯ã以åã¾ã§ã¯ Small 以ä¸ã® Vim ã«å«ã¾ããæ©è½ã§ãããã7.4.200 ãã㯠Tiny ãå«ãå
¨ã¦ã® Vim ã§æå¹ã«ãªãããã«ãªãã¾ããã
Vim 8.0 Advent Calendar 25 æ¥ç® ã¦ã¼ã¶ã¼ããããã¼ã«ãã
é·ãã£ããã®é£è¼ãã¤ãã«æçµåã§ãã
ãVim ã¦ã¼ã¶ã¼ããããã¼ã«ããã
2015 å¹´ã®å¹´æ«ãVim ã«ä»¥ä¸ã®ãããªã³ããããè¡ããã¾ããã
Author: Bram Moolenaar <[email protected]> Date: Thu Dec 31 16:10:23 2015 +0100 patch 7.4.1005 Problem: Vim users are not always happy. Solution: Make them happy.
Vim ã¦ã¼ã¶ã¼ããããã¼ã«ãããã¨æ¸ããããã®ã³ãããã¯ã1 ã¤ã® Ex ã³ãã³ãã追å ãããã®ã§ããã
:smile
:help version8 ã®ãã¼ã¸å
ã® :smile Ex ã³ãã³ãã®èª¬æã«ã¯ãã³ãããã¡ãã»ã¼ã¸ã¨åæ§ã以ä¸ã®ããã«ã ãæ¸ããã¦ãã¾ãã
|:smile| make the user happy
ãã® Ex ã³ãã³ããå®è¡ãã¦ããä½ãã¨ã¦ã便å©ãªãã¨ãèµ·ããããã§ã¯ããã¾ãããããããããããã Vim ã®é¡ãã§ããã¨æãã¾ãã
ä¸é¨ã®ä¾å¤ã¯ããããããã¾ããããã½ããã¦ã§ã¢ã¯ã¦ã¼ã¶ã¼ããããã¼ã«ããããã«åå¨ãããã®ã ã¨æãã¾ããå°ãªãã¨ãç§ã¯ããã§ããã¨ä¿¡ãã¦ãã¾ãããVim ã¯ãã®ããã«ããã¨æã£ã¦ãã¾ãã
ä»å¾ããVim ã¯ã¦ã¼ã¶ã¼ããããã¼ã«ããããã«é²åãç¶ãã¾ãããã㦠Vim ã使ã£ãå¤ãã®ã¦ã¼ã¶ã¼ããããã¼ã«ãªããã¨ãé¡ã£ã¦ãã¾ãã

Happy Vimming!