VIM related
(2008-08-14 12:51)
Õ⼸ÌìһֱΪÁËдһ¸öºÏÊÊ×Ô¼ºµÄvim²å¼þ£¬Å¬Á¦Á˶àÌì¡£×îÖÕÓÐÁ˵ã½á¹û¡£
дvim²å¼þ£¨½Å±¾£©£¬¾ÍÂé·³¡¢×îÄѸãÃ÷°×µÄʾÍÊÇvimµÄ¶àģʽ·½Ã棨˼ά»áÂÒÏëµÄ£©¡£
ÕâÀïÒª¼Ç¼¼¸¸öÖØÒªµÄÎÊÌ⣺
normalµÄ×÷Óãº
execµÄ×÷Óãº
vim.command¡¢vim.evalµÄ×÷Óãº
python½Å±¾Óëvim±¾Éí½Å±¾µÄÊý¾Ý½»Á÷¡¢·½·¨»¥µ÷
Ä£Äâ¼üÅ̲Ù×÷
=============================================
execµÄ×÷Óãº
vim.command¡¢vim.evalµÄ×÷Óãº
python½Å±¾Óëvim±¾Éí½Å±¾µÄÊý¾Ý½»Á÷¡¢·½·¨»¥µ÷
Ä£Äâ¼üÅ̲Ù×÷
=============================================
1£©ÀÏÊÇ»áÏ룺normal²»ÊÇÔÚnormalģʽÏÂÓõÄÂ𣿵±ÎÒÔÚinsertģʽÀïÔõôʹÓÃѽ£¿Ã»ÓÐ´í¡£µ±ÎÒÃÇÔÚÓÃÊÖ¶¯È¥ÈÃvim¹¤×÷ʱ£¬normalÊÇÒªÔÚnormalģʽÀïÕâÑùÓ㺡°£ºnormal gg¡±¡£µ«Êǵ±ÎÒÃÇÔڽű¾Àïдµ½£¨ÏÖÔÚ»¹ÊÇÔÚinsertģʽÀ£º¡°£ºnormal gg¡±Ê±£¬Õâ¾ä»°ÄÜÍê³É±¾À´µÄ¹¤×÷£¬¶øÇÒ»¹ÊÇ»á»Øµ½insertģʽÀÕâÒ²¾ÍÊÇ˵£¬ÎÒÃÇÔÚinsertģʽÀï¿ÉÒÔʵÏÖnormalģʽÀïµÄ²Ù×÷¡£ÄÇÎÒÃÇÔõôʵÏÖ£¿´ð°¸ÔÚº¯ÊýµÄµ÷ÓÃÀvim½Å±¾´úÂëµÄ´¥·¢£©¡£
=============================================
2£©execÊÇΪÁËÔڽű¾ÀïÓã¨Ö÷ÒªÓÃÔÚvim±¾Éí½Å±¾ÓïÑÔÀ£¬µ±È»¿ÉÒÔÓÃÔÚcommandģʽ£¬µ±ÊÇûÓÐÕâ¸ö±ØÒª¡£Ö±½ÓÔÚcommandÀïдÃüÁî²»¾ÍÐÐÁËÂ»¹Ó㺡°exec ¡°tabnew¡±¡±ÓÐʲôÒâ˼£¿
execÓô¦ÊÇÔËÐÐ×Ö·û´®±äÁ¿ÀïµÄÃüÁ
myCmd = ¡°tabnew¡±
exec myCmd
Èç¹ûÊÇÓÃpythonдvim½Å±¾Ê±£¬Õâ¸öûÓÐʲôÓá£ÒòΪËü±»pythonµÄvim.command()È¡´ú¡£
=============================================
3£©vim.commandÖ÷ÒªÊÇΪÁËʹÓÃvim±¾ÉíµÄ½Å±¾Óï¾ä£¡ËüÓëvim.evalÊÇpythonÓëvim±¾Éí½Å±¾µÄ½»Á÷ͨµÀ¡£3£©Óë4£©ÊÇÁ¬ÔÚÒ»ÆðµÄ¡£ÏÂÃæÒ»Æð˵˵£º
Êý¾Ý½»Á÷£º
pythonʹÓÃvimµÄÊý¾Ý£º
pyVariable = vim.eval(¡±vimVariable¡±)
python°ÑÊý¾Ý½»¸øvim£º
vim.command(¡¯let vimVariable = ¡°%s¡±%spyVariable)
vim.command(¡¯let completeList = ¡°%s¡±¡®%returnString)
·½·¨»¥µ÷£º
pythonʹÓÃvimµÄ·½·¨£º
vim.command(¡¯let tmpVariable = getpos(¡±.¡±)¡¯)
pypos= vim.eval(¡¯tmpVariable¡¯)
pypos= vim.eval(¡¯tmpVariable¡¯)
vimʹÓÃpythonµÄ·½·¨£º
function PythonFunc()
python ¡¶¡¶EOF
import vim
python´úÂë¶Î
EOF
endfunction
python ¡¶¡¶EOF
import vim
python´úÂë¶Î
EOF
endfunction
call PythonFunc()
5£©Ä£Äâ¼üÅ̲Ù×÷£º
ÓÐÁ½ÖÖ·½·¨£º
1)normal·½Ê½£º¡°:normal ¡°\¡¶Esc¡·¡±¡±(ÒªÔÚinsertģʽϲſ´µ½Ä£ÄâЧ¹ûµÄ£¬¸ÐлÓʼþÁбíÍøÓÑtocer£©
2£©º¯Êýreturn·½Ê½£º
2£©º¯Êýreturn·½Ê½£º
function Esc()
exe ¡°normal \¡¶Tab¡·¡±
return ¡°\¡¶Esc¡·¡±
endfunction
exe ¡°normal \¡¶Tab¡·¡±
return ¡°\¡¶Esc¡·¡±
endfunction
=============================================
=============================================
=============================================
vim½Å±¾´úÂëµÄ´¥·¢¡££¨Ð´³ÌÐò²»¿ÉÄÜÒ»Ö±ÔËÐеģ¬ÓÐʱºòÒªµÈÓû§µÄ´¥·¢£©
ÏÖÔÚÎÒÖ»ÖªµÀ¼¸ÖÖ£º
1)Æô¶¯×Ô¶¯´¥·¢
2£©Ó³Éä´¥·¢
3£©¡¶C-R¡·=·½Ê½´¥·¢
4£©×Ô¶¯ÃüÁî´¥·¢
2£©Ó³Éä´¥·¢
3£©¡¶C-R¡·=·½Ê½´¥·¢
4£©×Ô¶¯ÃüÁî´¥·¢
=============================================
1£©Æô¶¯´¥·¢¾ÍûÓÐʲôºÃ˵µÄ¡£¾ÍÊÇÆô¶¯vimʱ´¥·¢µÄ¡£ÕâʱvimÔÚnormalģʽÀï¡£
=============================================
2£©Ó³Éä´¥·¢£º
¾ÍÊÇÓû§°´¼üʱ£¬Òý·¢Ò»¸öº¯Êý»òÕßÒ»´®normalÓï¾ä¿ÉÒÔÖ´ÐеIJÙ×÷¡£ ÔÙÕß¾ÍÊÇÁ½ÕߵĻìºÏʹÓã¡£¡
º¯ÊýÖ»ÒªÊÇÊý¾ÝµÄ´¦Àí¡£¶ønormalÓï¾äÔòÊǰïÎÒÃÇÄ£Äâ¼üÅ̵IJÙ×÷£¡£¨ÎÒÃDz»ÓÃÈ¥ÊÖ¶¯°´:-)£©
inoremap CleverTab()
function CleverTab()
let curLine = getline(¡¯.')
python ¡¶¡¶EOF
import vim
cur = vim.eval(¡¯curLine¡¯)
if len(cur):
____if cur[-1] == ¡® ¡® or cur[-1] ==¡¯\t¡¯:
________string = ¡®¡±\¡¶Tab¡·¡±¡®
____else:
________string = ¡®¡±\¡¶C-X¡·\¡¶C-N¡·¡±¡®
________vim.command(¡¯let curLine =¡¯ + string)
else:
____string = ¡®¡±\¡¶Tab¡·¡±¡®
____vim.command(¡¯let curLine =¡¯ + string)
EOF
____return curLine
endfunction
function CleverTab()
let curLine = getline(¡¯.')
python ¡¶¡¶EOF
import vim
cur = vim.eval(¡¯curLine¡¯)
if len(cur):
____if cur[-1] == ¡® ¡® or cur[-1] ==¡¯\t¡¯:
________string = ¡®¡±\¡¶Tab¡·¡±¡®
____else:
________string = ¡®¡±\¡¶C-X¡·\¡¶C-N¡·¡±¡®
________vim.command(¡¯let curLine =¡¯ + string)
else:
____string = ¡®¡±\¡¶Tab¡·¡±¡®
____vim.command(¡¯let curLine =¡¯ + string)
EOF
____return curLine
endfunction
=============================================
3£©¡¶C-R¡·= ·½Ê½´¥·¢
ÕâÖÖ·½·¨Ö»ÒªÊÇÍê³É2£©·½·¨µÄ°²È«ÎÊÌâÉèÖõġ£
ºÍ2)Ö»ÊÇÒ»µã²»Í¬£º
inoremap =CleverTab()
=============================================
4£©»¹Ã»ÓÐѧ£¬²»»á¡£µ½Ê±Ð´¡£
¶àÖֽű¾µÄ»ìºÏʹÓá£
²»ÒªÏë×ÅÓÃÆäËüÓïÑÔ£¨²»ÓÃvim±¾ÉíµÄ½Å±¾ÓïÑÔ£©Ð´³öÒ»¸övim²å¼þ £¡
Ëä˵¿ÉÒÔ¶àÖÖÓïÑÔдvim½Å±¾£¬µ«ÊÇvim±¾Éí½Å±¾»¹ÊÇ´¦ÓÚÉϷ磨ûÓÐËü²»ÐУ©¡£ÆäËüÓïÑÔÒ»°ãÊÇÓÃÓÚÊý¾Ý¡¢Ëã·¨£¬ÔÚÕâ¸ö¹ý³ÌÖÐҪͨ¹ývim.command¡¢vim.evalÓõ½vim±¾ÉíÓïÑÔ¡£

