精华内容
下载资源
问答
  • 本书将向您介绍Vimscript,这是用于自定义Vim并使您在Vim中的其余时间更有效的主要编程语言。
  • 笨方法学 Vim Script

    2016-06-04 13:32:34
    笨方法学 Vim Script
  • Vimscript的经典教程

    2017-08-08 00:51:07
    vimscript,由浅入深,勤加练习,写出让大家都喜欢用的vim插件,需要的知识都在这里。
  • Maktaba是一个vimscript插件库。 它是为插件作者设计的。 功能包括: 插件对象(用于操作vimscript中的插件) 插件标志(用于配置没有全局设置的插件) 通用记录器界面 依赖管理工具 真正的关闭 Maktaba提倡一种...
  • VIMSCRIPT学习

    千次阅读 2016-05-08 07:43:19
    1.vimscript  vim是一个功能相当强大的编辑器。vimscript是一门用于定制Vim的脚本语言。vimscript其实就是 vim命令。例如在vim中,保存一个文件使用命令:write(或者缩写 :w)并回车确认。在这里其实用:符号进入...

    1.vimscript

             vim是一个功能相当强大的编辑器。vimscript一门用于定制Vim的脚本语言vimscript其实就是 vim命令。例如vim中,保存一个文件使用命令:write(或者缩写 :w)并回车确认。在这里其实用:符号进入vim命令行模式,然后使用vimscriptwrite命令来保存文件

             因此,vimscript中的命令可以在vim的命令行模式中执行,也可以编写到文件(例如vimrc)中形成vim脚本文件,然后由vim去执行。其中vim的插件编写就采用的是第二种。

     

    2.vimscript的注释

           vimscript脚本文件中,使用左双引号"来表示注释。

     

    3.vimscript常用的命令

    set number  "设置行号
    set nonumer  "取消行号

    3.vimscript中的键盘映射命令map

             vim中已经有了很多的默认的键盘快捷键。例如*#以及dd等等这些。然后我们可以使用map类的命令去设置一些自定义的键盘快捷键。map类的命令有好几个,如下(比如map命令可以设置Normal/Visual/Operator Pending三种模式下的键盘快捷键,而imap可以设置Insert模式的键盘快捷键):


    1)设置键盘映射

    使用:map<要映射的键> <被映射的键>的语法来设置一个键盘映射。

    A):map <F5> i{<Esc>ea}<Esc> #使用F5可以将光标所在的单词word加上花括号,其中i是进入insert模式,然后插入{,然后回到Normale表示光标移到单词word末尾,a进入Insert模式,然后插入},然后回到Normal模式。

    B):map <F10> <Esc>:tabnew<CR> #使用F10vim中打开一个新的标签页。

    C):imap <c-d> <Esc>ddi  #Insert模式下,按下Ctrl+d会删除一行,删除一行后仍旧处在Insert模式下。

    备注:其中<Esc>代表Esc退出键,<CR>代表回车键,<Space>代表空格键等等

    2)查看vim设置了哪些键盘快捷键

           使用:map命令(不带任何参数)可以列出vim所有工作模式下的快捷键,输出结果中第一列表示的哪一个工作模式下的快捷键,如下表格:


           同时使用:nmap/:vmap/:omap/:map!/:imap/:cmap命令(不带任何参数)可以查看对应vim工作模式下的快捷键。

    3)取消键盘快捷键

           如果想要取消一个映射,可以使用命令:unmap<键盘快捷键>,例如取消绑定到F10的快捷键:unmap <F10>。值得注意的是,必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。

          同时,针对不同模式下的键盘映射,需要使用与其相对应的unmap命令。例如:使用:iunmap命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用:nunmap命令。

         如果想要取消所有映射,可以使用:mapclear命令。请注意,这个命令将会移除所有用户定义和系统默认的键盘映射。

    4)关于键盘映射中leader介绍

    我们是map来自定义一个键盘快捷键时,我们按下快捷键,就可以使用我们想要的功能。但是如果这个快捷键比如<Space>,如果我们确实要使用空格键输入一个空格怎么办。这个问题其实就是快捷键和按键的本来用途之间有冲突嘛。其实我们可以对我们的所有的快捷键设置一个前缀,比如-,。例如:map -<F10> <Esc>:tabnew<CR>这样设置,那么我们就可以使用F10干它自己该干的事。这种自己在配置键盘映射时,认为加入前缀比较麻烦。vimscript中支持用leader来为快捷键设置一个前缀。配置方法如下:

    :let mapleader = "-"   ''用let命令来是设置一个前缀
    :nnoremap <leader>d dd ''当我们在vim中输入-d时就会删除一行了。

    其他闲杂知识:

    1)在vim中执行:help可以打开vim的帮助文档。执行:help command可以查看任意的command的帮助文档,例如可以执行:help write看看write命令的帮助文档。

    2)在vim中执行:echo $MYVIMRC可以获取vimrc文件的路径和位置

     

     

    学习资料参考于:

    http://learnvimscriptthehardway.onefloweroneworld.com/

    http://feihu.me/blog/2014/intro-to-vim/

    http://learnvimscriptthehardway.onefloweroneworld.com/chapters/06.html

    http://yyq123.blogspot.com/2010/12/vim-map.html

    展开全文
  • Learn Vimscript the Hard Way

    2016-05-18 14:20:26
    《Learn Vimscript the Hard Way.pdf》
  • Vimscript的面向对象的框架。 __ _ __ ____ / /_ (_)__ _____/ /_ / __ \/ __ \ / / _ \/ ___/ __/ / /_/ / /_/ / / / __/ /__/ /_ \____/_.___/_/ /\___/\___/\__/ /___/ Vimscript的面向对象框架,外观和...
  • 在纯 vimscript 中实现的类似 vim 的缓冲区控制库的诅咒。
  • vmustache-VIMScript的Moustache模板系统 vmustache是​​VIMScript中的实现。 用法 vmustache中有两个必须直接使用的基本功能: vmustache#RenderString(text, data) 此函数解析作为字符串text给出的模板,并使用...
  • VimScript语言服务器 VimScript的语言服务器 特征: 自动完成 功能签名帮助 悬停文件 去定义 去参考 文件符号 文件重点 折叠范围 选择范围 改名 片段 诊断 安装 纱线用 yarn global add vim-language-server 对于...
  • vimprng:vimscript 中的伪随机数生成器 这是一组翻译成 vimscript 的 PRNG,因为......好吧,这一切都源于对“随机颜色方案”脚本的不满:我修补了其中一个使用/dev/urandom ,然后我认为它不起作用windows,所以我...
  • Graphviz调用Vimscript的图形可视化。 快速使用说明 笔记 假设您位于包含plugin子目录的VimCallGraph目录中。 :let vcg = VimCallGraph() :call vcg.parse("plugin/vimcallgraph.vim") :enew :call setline(1, vcg...
  • 学习Vim:学习Vim和Vimscript不一定很困难。 这是您正在寻找的指南
  • vimscript.tar.bz2

    2014-01-25 01:15:00
    vimscript.tar.bz2
  • Vim脚本语言服务器 在Rust中为Vim脚本/ vimL语言实现Language Server协议。 该项目仍处于早期开发阶段-它不支持所有Vim脚本语法,...if executable ( ' vimscript-language-server ' ) au User lsp_setup call lsp#
  • Vim及VimScript资料总结

    千次阅读 2011-12-20 13:53:39
    Vim教程 入门 Vim 实用技术 Learning the vi and Vim Editors A Byte of Vim 进阶 Practical Vim Hacking Vim 7.2 ...Learn VimScript the Hard Way 如果想系统了解如何开发vim插件, 这是最好的入门与深入教程


    Vim教程

    入门

    1. Vim 实用技术
    2. Learning the vi and Vim Editors
    3. A Byte of Vim

    进阶

    1. Practical Vim
    2. Hacking Vim 7.2

    VimScript教程

    1. Learn VimScript the Hard Way
      • 如果想系统了解如何开发vim插件, 这是最好的入门与深入教程

    Vim 配置

    1. spf13 presents - The Ultimate Vim Distribution
      • 终极配置方案, 建议有vimscript基础后根据其其代码打造自己的配置

    社区与网站

    1. http://www.vim.org/
    2. http://vim.wikia.com/wiki/Vim_Tips_Wiki
    3. google
      • 遇到问题, 一般google都能解决

    我的插件

    个人开发的一些插件, 用于解决工作中的实际问题.

    1. https://github.com/FuDesign2008/GoodColors.vim

      • 精心挑选的Vim配色(scheme)
      • :Range 命名随机选择配色, 再也不用为选择哪种配色而烦恼
    2. https://github.com/FuDesign2008/translator.vim

    3. https://github.com/FuDesign2008/ToggleNumber.vim

      • 快速切换行号/相对行号/无行号状态
      • 了解相对行号好处的同学, 应该知道很有用
    4. https://github.com/FuDesign2008/SpaceControl.vim

      • 控制代码中tab转换成空格, 行尾清除空格
    5. https://github.com/FuDesign2008/OpenUrl.vim

      • 快速打开光标下的URL链接, 再也不用 a.选择链接地址区域; b.拷贝链接; c.粘贴到浏览器 d.enter键 打开链接
      • 自动识别URL
    6. https://github.com/FuDesign2008/GotoFile.vim

      • 根据光标所在的相对路径快速打开文件
      • 对使用sea.js管理JavaScript代码模块的工程非常有用, 在某些情景下比Ack插件还爽
    7. https://github.com/FuDesign2008/jslhint.vim

      • 集成jshint和jslint检查引擎, 可自由切换检查引擎
      • 更好的管理jshint/jslint的配置
    8. https://github.com/FuDesign2008/backbone.vim

      • jQuery/Underscore语法高亮, 高亮jQuery, Underscore的方法名
      • 对使用jQuery/Underscore/Backbone的同学比较有用
    9. https://github.com/FuDesign2008/ppt.md

    10. https://github.com/FuDesign2008/WebSearch.vim

      • 将web搜索集成到vim, 可自由配置搜索引擎
      • :WS keyword1 keyword2 ... 即可搜索
    11. https://github.com/FuDesign2008/MarkdownViewer.vim

    12. https://github.com/FuDesign2008/plan.vim


    展开全文
  • 笨方法学Vimscript

    2019-03-25 15:27:57
    笨方法学Vimscript面向那些想学会如何自定义Vim编辑器的用户。 http://learnvimscriptthehardway.stevelosh.com/

    笨方法学Vimscript面向那些想学会如何自定义Vim编辑器的用户。

    http://learnvimscriptthehardway.stevelosh.com/

    展开全文
  • 测试是用 vimscript 编写的,可以使用 python 测试运行器或使用 ant 任务在命令行中运行。 这是一个示例测试用例,它在 vim 文件中测试带有选项卡扩展的自动缩进: function SetUp() set expandtab shiftwidth=2...
  • 在你的Vim Script中高亮用户友好的注释
  • learn vimscript the hard way的mobi版。方便用kindle来离线阅读。
  • 该项目旨在为vimscript调试提供调试适配器(DAP)。 它的主要用例是与一起使用。 地位 它正在进行中,处于“实验”阶段,需要从我的叉子上更改Vim。 概念证明可以: 逐步执行等 显示本地人 显示调用堆栈,包括...
  • vim-jsx-pretty, [Vim script] 对vim的JSX语法非常突出 vim-jsx-pretty演示语法vim-jsx-pretty( 添加彩色配置) vim-jsx-pretty mxw/vim-jsx 自动缩进( 使用 vim-javascript )
  • vim-editorconfig:另一个仅用vimscript编写的vim编辑器(http:editorconfig.org)插件
  • vim script简介

    千次阅读 2010-12-09 10:39:00
    script 簡介 原始的 vi 本就有一些簡單的 macro 語法,可以設定一些複雜的編輯動作於一個指令,等於是在創造一個新的指令。Vim 則更進一步把他發展成程式語言。在 Vim 中,一般的設定檔,如 vimrc 及...

    13 . V im script 簡介

    原始的 vi 本就有一些簡單的 macro 語法,可以設定一些複雜的編輯動作於一個指令,等於是在創造一個新的指令。V im 則更進一步把他發展成程式語言。在 V im 中,一般的設定檔,如 vimrc 及一些 syntax/plugin 檔,都是由 V im script 寫成的。可以設定變數,也有迴圈、條件判斷及內建函數可以使用,更可以自訂函數,儼然就是一個程式語言雛形了。當然,原始的 vi macro 語法還是認得的,這點不必擔心。

    由於 V im script 的大大擴充,雖然說是簡介,但內容可能會比其他的章節多,而且可能會比較深入一些,可以視情形,撿幾個順手的例子來用,不必一開始就要通通搞懂他。:-)

     

    13 .1 一些簡單的 macro

    這裡指的 macro 是一般的鍵盤對應、縮寫設定及簡單的新命令定義,雖然也是會使用到 V im script,但由於並不是完整的規劃、設計,因此就以 macro 為名來代表(當然,實質上也是利用 V im script 來書寫的)。

     

    13 .1 .1 按鍵對應

    V im 可以將多個動作(命令或是函數)對應給一個簡單的按鍵,這樣一來就可以很方便的按個鍵去執行所定義的動作,基本的例子就是第 9.7 節,頁 [*] 的一些實際例子。由於 V im 預設已經內建把 F1 鍵定義給線上求助檔,因此,這個鍵就不要去麻煩他了。

     

    13 .1 .1 .1 一些按鍵的書寫方法

    在傳統的按鍵對應,有他的簡單書寫方法,但通常並不是很直覺,V im 則改進了書寫方法,可以很直覺的書寫。以下是一些例子:

    <Esc >Esc 鍵。
    <Tab >Tab 鍵。
    <Home >Home 鍵。
    <Del >Del 鍵。
    <CR >Enter 鍵。
    <Enter >Enter 鍵,和上面的相同。
    <LT >就是 <,在和 < 字元本身會有混淆、疑義時使用。也可以使用 /<。
    <BS >Backspace 倒退鍵。
    <Up >PageUp 向上翻頁鍵。
    <F5 >F5 功能鍵。
    <C-G >Ctrl+G 鍵。

    要注意的是,大小寫是不分的,以上的書寫只是為了閱讀方便而已。詳細的按鍵符號,這裡就不多說明了,有需要的話,可以進入 vim:h key-notation ,就會有詳細的列表。

    /< 的使用只能在 cpoptions 設定項不含 B 旗標時才能使用,通常 B 旗標預設是會有的,請 :set cpoptiions? 就可知道目前的設定。

    要非常小心的是,這種直覺的書寫方式,不能用於 :set 及 :autocmd 的情形,因為角括號在裡頭有其他的特殊意義。通常,這只能用於按鍵的對應,縮寫及選單設定的情況。

     

    13 .1 .1 .2 map 指令的種類

    V im 除了原始的 map[!] 外,擴充了相當多的類似 map 指令。各在不同的模式作用。map 主要是作用於常態模式及反白模式,而 map! 則是作用於插入模式及命令列模式。

    v map僅在反白模式時作用,Visual mode。
    n map僅在常態模式時作用,Normal mode。
    i map僅在插入模式時作用,Insert mode。
    o map僅在操作等待模式時作用,Operator-pending mode。
    c map僅在命令列模式時作用,Command-line mode。

    [實例] :map <F5> bi{<Esc>ea}<Esc>
    這樣一來,只要在英文單字任意處按 F5 ,這個英文單字的前後就會加上大括號。

    說明如下:

    bi {<Esc>按 b 移至英文單字的第一個字母處,並按 i 進入插入模式,寫入 { 這個字元,並按 Esc 鍵,回復常態模式。
    e 移動至這個英文單字的最後一個字母處。
    a }<Esc>進入插入 append 模式,並輸入 } 這個字元,再回到常態模式。

    需注意的是,在命令列模式前頭會有個冒號,因為在 vim 裡頭,要按個冒號才會進入命令列模式。但如果是設在 V im script 檔裡頭當然就沒有冒號了。以上的例子也是可以對應至一些較容易記憶的按鍵,例如:

     

    map ,b bi{<Esc>ea}<Esc>

    這樣按 ``,b'' 就會有同樣的作用,但 ``,'' 及 ``b'' 之間不能相隔太久的時間,這樣 V im 才會知道這兩個按鍵是結合在一起的13 .1 。而 b 在此就代表 braces(大括號)。

    如果要知道目前的按鍵對應的情形,可 :map 就會列出所有的目前按鍵對應,前面標示的記踸就是各種模式的代表字母,例如 n 代表 normal,i 代表 insert。

     

    13 .1 .1 .3 防止重複對應

    為了防止重複對應到已有定義的按鍵,通常指令內可加入 nore 的字樣,例如:

    :noremap  => Normal, Visual and Operator-pending
    :vnoremap => Visual
    :nnoremap => Normal
    :onoremap => Operator-pending
    :noremap! => Insert and Command-line
    :inoremap => Insert
    :cnoremap => Command-line

    其實其他對應性質的指令也是會有類似的這種指令,請參考下一節。

     

    13 .1 .2 縮寫對應

    縮寫對應是把一長串的字串對應到簡單的幾個代表性字串。縮寫的對應只能用在插入模式、取代模式及命令列模式。主要用於輸入時節省時間及避免拼錯。這裡利用例子來做說明:

    [實例] :ab gl GNU Linux
    把 gl 這個按鍵對應成 GNU Linux。

    ab 是 abbreviate 的縮寫,這樣一來,在插入模式時,只要輸入 gl,再按 Sapce 鍵或 Ctril+] ,這個 gl 就會變成 GNU Linux 這個字串。SapceCtril+] 的區別在於前者會多留個空白,方便繼續輸入其他文字;而後者則不會多留個空白。 要注意的是,這在取代模式(請參考第 3.1.2 節,頁 [*] )、命令列模式(請參考第 1.4 節,頁 [*] )也是可以作用,如果是使用 :ia[bbrev] ,那只會在插入模式及取代模式有作用。

    以下是一些常會用到的指令:

    :ab[breviate] 不接任何參數,這會列出目前所有的縮寫對應。其中標有 `i' 的,代表作用於插入模式;標有 `c' 的,代表作用於命令列模式;標有 `!' 的,則兩種模式皆有作用。
    :ab gl 這會列出 gl 是對應成什麼字串。
    :una[bbreviate] gl 取消 gl 這個對應。
    :ia[bbrev] :ab 的定義一樣,但只作用於插入模式。
    :cb[bbrev] :ab 的定義一樣,但只作用於命令列模式。
    :norea[bbrev] 用於防止重對應已有對應的字串。
    :abc[lear] 取消所有由 :ab 所定義的對應。
    :iabc[lear] 取消所有由 :ia 所定義的對應。
    :cabc[lear] 取消所有由 :ca 所定義的對應。

     

    13 .1 .3 定義新命令

    V im 提供自行定義新命令的方法,其語法是:

    :com[mand][!] [屬性……] 新命令名 動作

    屬性的部份較複雜,在此先省略不談,底下再來詳細說明。其中 `!' 代表強制定義已有的命令,否則已存在的命令是不允許重定義的。新命令名也是有限制:

    (1) 必需以大寫英文字母開頭。
    (2) 不能使用 :X,:Next,:Print,這三個保留字。
    (3) 其他的部份,可以是字母或數字,分大小寫,但不能使用底線。
    但不建議使用數目字。

    通常此類新命令的定義是使用在 V im script 的場合。

     

    13 .1 .4 新命令的屬性

    V im 會把這些命令當成是 ex 命令一般的地位。這裡的所謂屬性指的是新命令所能使用的參數及是否可以指定範圍等等。這裡分成四個部份來說明:參數、補全動作、範圍指定及特殊情形。

     

    13 .1 .4 .1 參數

    新命令可以使用 -nargs 屬性來指定參數的性質。

    -nargs=0  這是預設,就是沒有參數,可以省略不寫。
    -nargs=1 需要一個參數。
    -nargs=* 是否有參數及參數數目不拘。
    -nargs=? 允許零或一個參數。
    -nargs=+ 必須有參數,但參數數目不拘。

    參數之間以空白或 Tab 區隔。實際上定義時,置放參數的位置是以 <args> 來代表的。

    <args>   一般使用,但參數內無法使用雙引號。
    <q-args> 和 <args> 同,但可以使用雙引號。
    <f-args> 用於函數內所要用到的參數。

     

    13 .2 V im script 的語法

    V im script 只有兩種資料型態,數字及字串。

    展开全文
  • calendar.vim calendar.vim创建一个可以在 vim 中使用的日历窗口。 它本身作为日历内部 vim 很有用。 它还提供钩子来自定义其行为,使其成为编写需要日历功能的新插件的良好基础(有关更多信息,请参阅:help ...
  • Vim Script 实现一个自己的function Vim有许多功能强大的插件,可以定制化实现很多出色的功能,一直向往能自己开发一个适合自己的插件,可惜能力和精力都有限。今日偶的闲来试试吧! Vim自带的Help里面就有如何写...
  • vim script for kernel coding

    2016-03-10 17:59:44
    vim的一个插件, 对于编写kernel代码很有帮助 使用方法就是简单的放在~/.vim/plugin目录下 ...Subject: vim script for kernel coding this is the original one http://www.vim.org/scripts/script.p
  • 《Learn Vimscript the Hard Way》

    千次阅读 2016-05-18 14:32:58
    1 学习Vimscript能干啥? a) 能帮助我们更加快捷的使用vim编写程序。 b) 能够帮助我们理解~/.vimrc中的一些配置的含义,为什么需要这样配置。 c) 学习之后,可以自己写一些vim插件,提高自己阅读和编写代码速度和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,130
精华内容 30,852
关键字:

vimscript