VIM Script /VIML 腳本語言入門

參考:Learn Vimscript the Hard Wayhtml

變量

"設置變量
let myVariable = 1
let myString = 'Hello'

邏輯控制

參考:Comparisons - Learn Vimscript the Hard Waypython

if-else:vim

if 3 >= 1
    echo 'True'
elseif 3 < 4
    echo 'True again'
elseif 3 == 3
    echo 'True true'
else
    echo 'False'
endif

VIM中的字符串和數字是能夠直接比較的,如:echo '3' >= 3,返回1.ruby

Functions 函數

參考:Functions - Learn Vimscript the Hard Way架構

函數名必須大寫開頭。
function MyFunction()
    :wq
endfunction

可是若是重載當前vimrc的話,會遇到function already exists警告。
因此最好在將函數定義爲可重寫的函數,即變爲function!函數

function! MyFunction()
    :wq
endfunction

內置函數

has(..)

  • has('程序語言')
  • has('硬件架構')
  • has('xxx')

system(...)

  • system('rm /tmp/*')

buffer

  • bufnr('%'): 返回當前VIM中的buffer數量

autocmd 事件觸發器

參考很是棒的VIM官方文檔(中文翻譯):http://vimcdoc.sourceforge.ne....net

格式爲::au[tocmd] [group] {event} {pat} [nested] {cmd}
中文的話就是::au[tocmd] [組] {事件} {文件名規則} [nested] {命令}翻譯

若是命令比較複雜的話,建議建立function,而後在autocmd中call func()code

經常使用技巧

獲取當前buffer的文件名、路徑、擴展名

參考:How can I see the full path of the current file?
參考:How do I get the name and extension of the current file?htm

都知道,VIM中%表明當前buffer,咱們能夠增長filename-modifiers來操做%獲得buffer關聯的文件的相關信息。

Register %返回當前文件的名字。因此咱們才能夠用!python %這樣的命令來運行當前腳本。
VIM中,%還能作到不少的擴展:

:echo @%                |" directory/name of file
:echo expand('%:p')     |" full path "PATH"
:echo expand('%:p:h')   |" directory containing file "HEAD"
:echo expand('%:t')     |" full name of file "TAIL"
:echo expand('%:t:r')     |" Only name of file "ROOT"
:echo expand('%:e')     |" Only extension of file "EXTENSION"

咱們在vimrc中使用的時候,能夠省略echo和expand。好比:
nnoremap <C-g> :!CMD %:p:h<CR>,這樣能夠在按Ctrl-g時候,在當前文件所在的目錄執行CMD命令

「獲取路徑
echo expand('%:p')    "/home/mool/vim/src/version.c

"獲取文件全名
echo expand('%:t')   "version.c

"獲取文件名,不包括擴展名
echo expand('%:t:r')   "version

"獲取擴展名
echo expand('%:e')   "c

Multiple lines 換行

\開頭,|結尾,便可鏈接多行爲一行。

au Filetype ruby
            \ setlocal ts=2  |
            \ setlocal sts=2 |
            \ ...
相關文章
相關標籤/搜索