æšæ¥ã2013幎7æ6æ¥ãBram Moolenaar
㯠ãVim 7.4ã®æåã®ããŒã¿çã®ãªãªãŒã¹ã
çºè¡šããŸãããããã¯ãäžçæé«ã®ããã¹ããšãã£ã¿* nixã®1ã€ã§ãã
æ°ããããŒãžã§ã³ã®æãéèŠãªå€æŽã¯ãæ°ããæ£èŠè¡šçŸãšã³ãžã³ã§ãã PythonãµããŒãã倧å¹
ã«æ¹åãããŸããã
å€æŽç¹ïŒ
æ°ããæ£èŠè¡šçŸãšã³ãžã³
çŸåšå€ããšã³ãžã³ãšåŒã°ãããšã³ãžã³ã¯ããªã¿ãŒã³ããŒã¹ã®ã¢ã«ãŽãªãºã ã䜿çšããŠããŸãã 圌ã¯ãããæ¹æ³ã§ããã¹ããšæ£èŠè¡šçŸã®å¯Ÿå¿ãèŠã€ããããšãã倱æããå Žåã¯æ»ã£ãŠå¥ã®æ¹æ³ã䜿çšããããšããŸãïŒtranslation
ïŒh new-regexp-engine ïŒã ãã®ã¢ã«ãŽãªãºã ã¯åçŽãªæ£èŠè¡šçŸã§ããŸãæ©èœããŸãããé·ãããã¹ãã§ã¯ããè€éãªãã®ãé·ãããå ŽåããããŸãã
æ°ãããšã³ãžã³ã¯ã¹ããŒããã·ã³ã䜿çšããŸãã æå®ãããæåã®ãã¹ãŠã®å¯èœãªéžæè¢ããã§ãã¯ããæ£èŠè¡šçŸã®å¯èœãªç¶æ
ãä¿åããŸãã ãã®ã¢ãããŒãã¯åçŽãªæ£èŠè¡šçŸã§ã¯å€å°é
ããªããŸãããè€éãªè¡šçŸãé·ãããã¹ããæ±ãå Žåã¯éåžžã«é«éã§ãã
ãã®å€æŽã¯ãé·ãè¡ãå«ãJavascriptããã³XMLãã¡ã€ã«ã衚瀺ããå Žåã«æãé¡èã§ãããããã®å ŽåãVimã¯éåžžã®é床ã§åäœããŸããã以åã¯åŒ·åãªãã¬ãŒãã衚瀺ãããŠããŸããã
çŸæç¹ã§ã¯ããšã³ãžã³ã¯éåžžã«å®å®ããŠããŸãããæ°ãããšã³ãžã³ã䜿çšãããšåäœãå€ããè€éãªæ£èŠè¡šçŸãèŠã€ããããšããããŸãã Vimã®ãœãŒã¹ã³ãŒãããå€ããšã³ãžã³ãåé€ããããšã¯èšç»ãããŠããŸãããéã«ãBramã¯ãæ£èŠè¡šçŸãããé«éã«åŠçãããšã³ãžã³ãéžæããäœããã®ãã¥ãŒãªã¹ãã£ãã¯ã¢ãã©ã€ã¶ãŒãäœæããããšè¿°ã¹ãŸããã
ãŸããé決å®æ§ã®æéç¶æ
ãã·ã³ã«åºã¥ãæ°ãããšã³ãžã³ã¯ãé·ãã®å¶éã®ãªãåŸèªã¿ããµããŒãããå¯äžã®äžè¬çãªãšã³ãžã³ã§ããããšã«æ³šæããŠãã ããã 確ãã«ãããã©ãŒãã³ã¹ãåäžãããããã«ãåŸèªã¿ãµãè¡šçŸã«äžèŽã§ããæåæ°ãæ瀺çã«ç€ºãããšããå§ãããŸãã
ç¹å®ã®ãšã³ãžã³ãéžæããã«ã¯ã
ãregexpengineãèšå®ïŒãã¹ãŠã®æ°ããæ£èŠè¡šçŸã«äœ¿çšããããšã³ãžã³ãå€æŽïŒãŸãã¯
/ \ïŒ
ïŒ=ãåŒã®å
é ã«äœ¿çšïŒãã®åŒã®ãšã³ãžã³ãå€æŽïŒã§ããŸãã
VimãšPython Embedded Interpreterã®çžäºéçšæ§ã®åäž
vim.bindeval
é¢æ°ãè¿œå ãããŸããã vim.eval
ãšã¯ç°ãªãããã®é¢æ°ã¯vim.Dictionary
ããã³vim.List
ãªããžã§ã¯ããè¿ããŸããããããå€æŽãããšã察å¿ããVimLå€æ°ãå€æŽãããvim.Functionã®åŒã³åºãã¯Vimçµã¿èŸŒã¿é¢æ°ãŸãã¯VimLã§èšè¿°ããããŠãŒã¶ãŒå®çŸ©é¢æ°ãåŒã³åºããŸãã
åçŽåã®å Žåãæ°ããé¢æ°ã¯å¯Ÿå¿ããPythonåãè¿ããŸããã vim.eval
ãšã¯ç°ãªããæ°åã¯æååè¡šçŸãšããŠã§ã¯ãªãæ°åãšããŠè¿ãããŸãã Python 3ã®æååã®å Žåã vim.bindeval
ãšvim.eval
ã«ã¯å€§ããªéããããvim.eval
ãæ°ããé¢æ°ã¯ãã€ãæååïŒ bytes()
ïŒãè¿ããå€ãUnicodeïŒ str()
ïŒã¯UnicodeDecodeError
ãåŒãèµ·ããå¯èœæ§ããããŸãã
ãããã®ãªããžã§ã¯ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãPythonã®çµã¿èŸŒã¿åã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ããçšåºŠå¯Ÿå¿ããŠããŸãã ã³ã³ãã©ã€ã¢ã³ã¹ã¯åŒãç¶ãæ¹åãããŸãã- å€æ°ãžã®ã¢ã¯ã»ã¹ã容æã«ããããã«ãç¹å¥ãªãªããžã§ã¯ã
vim.vars
ã buffer
.vars
ããã³window
.vars
ãã - èšå®ãžã®ã¢ã¯ã»ã¹ã容æã«ããããã«ãç¹å¥ãªãªããžã§ã¯ã
vim.options
ã buffer
.options
ããã³window
.options
ãã - ããã§ããã£ã¬ã¯ããª
{runtimepath}/python2
ã {runtimepath}/python3
ããã³{runtimepath}/pythonx
ããã¢ãžã¥ãŒã«ãã€ã³ããŒãããããã«ã sys.path
ã«äœãè¿œå ããå¿
èŠã¯ãããŸãããã€ã³ããŒãã¯èªåã§ãïŒ '_vim_path_'
ãã'_vim_path_'
ãåé€ããªãéãïŒãŸãã¯sys.path_hooks
ã®å¯Ÿå¿ããé¢æ°ïŒã - ã¿ããæäœããæ©èœãè¿œå ãããŸããã
- VimLã®äŸå€ãšãšã©ãŒã¯ãèªåçã«PythonäŸå€ã«å€ãããŸããã
- vim.buffersã®åäœãå€æŽãããŸãã ã以åã¯ãããŒã¯Vimå
éšæ§é å
ã®ãããã¡ãŒã®ã·ãŒã±ã³ã¹çªå·ã§ãããããã¯ããã®ãªããžã§ã¯ããééããããšã«ãã£ãŠã®ã¿èªèã§ããçŸåšã®ããŒã¯ãããã¡ãŒã®çªå·ã§ãã
- ã³ãã³ã
:pydo
è¿œå ãããŸããã - pyevalïŒïŒé¢æ°ãè¿œå ãããŸãã ã
- ãããŸã§æååã䜿çšãããŠããå Žæã§ããã°ã©ãã§ããäž¡æ¹ã®ããŒãžã§ã³ã®Pythonã§Unicodeæååãšãã€ãæååã®äž¡æ¹ã䜿çšã§ããŸãã æ°å€ã䜿çšãããŠããå Žåãæ°å€ãžã®å€æããµããŒããããªããžã§ã¯ãïŒããæ£ç¢ºã«ã¯ããæ°å€ãããã³ã«ãïŒã䜿çšã§ããããã«ãªããŸããã äžéšã®å Žæã§ã¯ããªã¹ãã®ä»£ããã«ã€ãã¬ãŒã¿ãŒã䜿çšã§ããŸãã
- çŸåšã
vim.window.col
ãšvim.window.row
ã䜿çšããããšãããŠã£ã³ããŠã®å ŽæãèŠã€ããå¯äžã®æ¹æ³ã§ãã dir(vim.*)
ãµããŒããä¿®æ£ãŸãã¯è¿œå ããŸããã- å€ãããŒãžã§ã³ã®PythonïŒ2.2 *以åïŒã¯ãµããŒããããªããªããŸããã ãã ããå€ãã®éäºææ§ã®ããã以åã¯çµã¿ç«ãŠãããŠããŸããã§ããã
ãã®ä»ã®å€æŽ
ïŒããŒãžã§ã³7.3.000以éã®å€æŽã瀺ãããŠããŸãïŒ
- viminfoã§ãªã¹ããšèŸæžãä¿åããããã®ãµããŒããè¿œå ãããŸããã
- ã³ãã³ãåŒæ°ã®èªåè£å®ãè¿œå ããŸãã
:language
ã - C ++åå空éå
ã®ã€ã³ãã³ãã«åœ±é¿ãäžããæ©èœãè¿œå ãããŸããã
- é¢æ°ã®åŒæ°ã®ã¢ã©ã€ã¡ã³ããšã¯å¥ã«
if
/ while
/ for
æ¡ä»¶ã®ã¢ã©ã€ã¡ã³ãã«åœ±é¿ãäžããæ©èœãè¿œå ããŸããã - ãœãŒãã«èŸæžé¢æ°ã䜿çšããæ©èœãè¿œå ãããŸããã3çªç®ã®åŒæ°ã¯
sort()
ã§ãã - è¿œå ã®ãããæŒç®ïŒ andïŒïŒ ã ãŸãã¯ïŒïŒ ã invertïŒïŒãããã³xorïŒïŒé¢æ°ã
- ã·ã§ã«ãšããŠã®cmd.exeã®ãµããŒãã®æ¹åã
- æåã»ããã®åã«çºçããInsertCharPreã€ãã³ããè¿œå ããŸããã
- å
¥åã¢ãŒãã§ã®èªåå®äºã®å®äºåŸã«çºçããCompleteDoneã€ãã³ããè¿œå ããŸããã
- GUIã®èµ·åã«å€±æããå Žåã«çºçããGUIFailedã€ãã³ããè¿œå ãããŸããã
- Vimãéãã代ããã«ãŠã£ã³ããŠãéããããšãã§ããã³ãã³ãã䜿çšããŠVimãéããããšãããšãã«çºçããQuitPreã€ãã³ããè¿œå ããŸããã
- ããã¹ããå€æŽããããšãã«çºçããTextChangedããã³TextChangedIã€ãã³ããè¿œå ããŸããã
- 'formatoptions'èšå®ã®J ïŒ jãã©ã°ã䜿çšãããšãã«ãã³ã¡ã³ãéå§æåãèªåçã«åé€ããæ©èœãè¿œå ãããŸããã
- ç¹å®ã®ãããã¡ãŸãã¯ãã¡ã€ã«ã®ãã¹ãŠã®ã¢ã€ã³ã³ãåé€ããæ©èœãè¿œå ãããŸããã
- ã³ãã³ãã©ã€ã³ã䜿çšãããšãã«ãéžæãã·ã¹ãã ã¯ãªããããŒãã«èªåçã«ä¿åããæ©èœãè¿œå ãããŸããïŒãªãã·ã§ã³
autoselectplus
settings 'clipboard' ïŒã ãŸããããã©ã«ãã§ã·ã¹ãã ã¯ãªããããŒããã¯ãªããããŒãã«ããæ©èœãè¿œå ããŸããïŒä»¥åã¯ããã®ãããªãããŠã¹ããããã¡ãŒãäœæã§ããŸããããããã¯ã¡ã€ã³ãããã¡ãŒãšåŒã°ããŠããŸããïŒã - 2åã®ã¯ãªãã¯ã§èŠã€ãã£ãè¡ã匷調衚瀺ããæ©èœãšãããŸããŸãªæäœïŒã³ããŒãåé€ã眮æïŒãè¿œå ããŸããïŒ
gn
ã³ãã³ãã - ãtabstopãã«çãããshiftwidthãã®å€ãšåãå¹æãæã€ç¹å¥ãªå€ãshiftwidthããè¿œå ããŸããã å°é£ã®ããã shiftwidthïŒïŒé¢æ°ãè¿œå ãããŸããã åæ§ã®ç¹å¥ãªæå³ããsofttabstopãèšå®ã«è¿œå ãããŸããã
- expandïŒïŒã«ç¹å¥ãªåŒæ°ãè¿œå ããçŸåšã®è¡çªå·ã«
<slnum>
ããŸãïŒ <slnum>
ã - ã³ãã³ãïŒdiffoffã¯ããã©ã«ãå€ãè¿ãã®ã§ã¯ãªããèšå®ãä¿åããããã«ãªããŸããã
- çŸåšã®ãŠã£ã³ããŠã®äžæã®çªå·ãå«ãå€æ°ãè¿œå ããŸããïŒã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã®ã¿ïŒïŒ vïŒwindowid ã
- çŸåšã®ãšã³ã³ãŒãã£ã³ã°ã«é¢ä¿ãªãUnicodeã§æåçªå·ãè¿ãæ©èœãè¿œå ãããŸããã2çªç®ã®åŒæ°ã¯char2nrïŒïŒã§ãã
- ãã¡ã€ã«ã®ãªã¹ããçæããé¢æ°ã¯ãæååå€ã§ã¯ãªããæ¹è¡æåã§ãã¡ã€ã«åã«åå²ãããlistãäœæã§ããããã«ãªããŸããã
- ç¹å®ã®ãŠã£ã³ããŠ/ã¿ã/ãããã¡ã§å€æ°ã®å€ãåãåãé¢æ°ã¯ã空ã®æååã ãã§ãªããæ€åºããå€æ°ãååšããªãå Žåãæå®ããå€ãè¿ãããšãã§ããããã«ãªããŸããã
- luaevalïŒïŒé¢æ°ãè¿œå ããŸããã
- VimLå€æ°ã«é¢é£ä»ããããåïŒ list ã dictionary ã function reference ïŒãluaã€ã³ã¿ãŒãã§ãŒã¹ã«ç»å ŽããŸããã
- luaã€ã³ã¿ãŒãã§ãŒã¹ã§ã¯ãé¢æ°
vim.isbuffer()
ããã³vim.iswindow()
ã¯vim.iswindow()
ã«çœ®ãæããããŸããã - sha256ïŒïŒé¢æ°ãè¿œå ããŸããã
- wildmenumodeïŒïŒé¢æ°ãè¿œå ãããŸãã ãããã«ãããã³ãã³ãã©ã€ã³ã®ãªãŒãã³ã³ããªãŒããçŸåšã¢ã¯ãã£ããã©ããã確èªã§ããŸãã
- ãã®ãã€ã³ãã£ã³ã°ã®å·ŠåŽãå¥ã®ãã€ã³ãã£ã³ã°ã®å·ŠåŽã®å
é ã«ãªããªãããã«æå®ããæ©èœãè¿œå ãããŸããïŒã€ãŸãã
map <buffer><nowait> , <Nop>
ã«ããããã®ãããã¡ãŒã®map ,b B
map ,a A
ããã³map ,b B
ãã€ã³ãã£ã³ã°ã®éå§ãå°é£ã«ãªãmap ,b B
ïŒ ïŒ <nowait>
åŒæ°ã䜿çšãããšããŠãŒã¶ãŒããã®èšå®ã§ãã€ã³ããéå§ããããã«å¿
èŠãªãã¹ãŠã®æåãå
¥åãããšããã«ãVimã¯æ¬¡ã®æåã®åŸ
æ©ãåæ¢ããŸãã - ãªãŒãã³ã³ããªãŒãã®è¿œå ã¿ã€ããè¿œå ïŒåŒæ°ïŒåäœ ãã«ã©ãŒã¹ããŒã ãã³ã³ãã€ã©ãåŒæ°ïŒcscope ã ããã¹ãã§æå®ããããã£ã¬ã¯ããªå
ã®ãã¡ã€ã«ãåŒæ°ïŒå±¥æŽ ããã±ãŒã«åãåŒæ°ïŒèšå· ãåŒæ°ïŒsyntime ããŠãŒã¶ãŒåã
- VimLé¢æ°ã䜿çšããŠãªã³/ãªããåãæ¿ããå€éšå
¥åã¡ãœããã®ã¹ããŒã¿ã¹ãååŸããæ©èœãè¿œå ããŸããã
- ãrelativenumberãèšå®ããªã³ã«ãªã£ãŠãããšãã«ãè¡çªå·ã®åã«çŸåšã®è¡çªå·ã衚瀺ããæ©èœãè¿œå ãããŸããã ãrelativenumberããšãnumberãã®äž¡æ¹ããªã³ã«ãªã£ããšãã«ãªã³ã«ãªããŸãã
- rxvt-unicodeããã³xterm-277ã«ããŠã¹ãµããŒããè¿œå ããŸããã
- èªåè£å®æã«å€§æåå°æåãç¡èŠããæ©èœãè¿œå ããŸããã
- ãããã°æ©èœç»é¢*ïŒïŒãè¿œå ãããç»é¢ã«è¡šç€ºãããå
容ã«é¢ããæ
å ±ãååŸã§ããããã«ãªããŸããã
- è¿œå ããããããã°ã³ãã³ãïŒsyntimeã䜿çšãããšã匷調衚瀺ã§äœ¿çšãããæ£èŠè¡šçŸã®é床ã確èªã§ããŸãã
- å€ãã®ãã°ãä¿®æ£ãããŸããã