做网站用的图标,seo关键词选择及优化,建设网站策划,帮建网站的人请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些?
在 Vim 脚本语言中#xff0c;a:mode 常常用于函数内部#xff0c;以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些?
在 Vim 脚本语言中a:mode 常常用于函数内部以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数中比如映射到多个模式的快捷键触发的函数。这样函数就可以根据不同的模式执行不同的操作。 a:mode 的可能值主要对应于 Vim 的几种基本模式每个值都代表 Vim 此时的一个特定状态
n普通模式 (Normal)。最常用的 Vim 模式用于浏览和编辑。v可视模式 (Visual)。用于选择文本块。o可视行模式 (Visual Line)。这是可视模式的一种特殊情况按行选择。V可视块模式 (Visual Block)。另一种可视模式允许按矩形块选择文本。i插入模式 (Insert)。用于输入文本。c命令行模式 (Command)。在执行命令时的模式。s选择模式 (Select)。类似于可视模式但是行为略有区别比如按键直接插入文本。t终端模式 (Terminal)。在 Vim 的终端模式下运行。
举例
假设你想创建一个函数该函数的行为会根据它被调用时的模式而改变。以下是一个简单的例子
function! DoSomethingBasedOnMode()if a:mode necho Called from Normal mode.elseif a:mode iecho Called from Insert mode.elseif a:mode vecho Called from Visual mode.elseecho Called from another mode: . a:modeendif
endfunction然后你可以创建一个映射让这个函数可以从不同的模式下被调用这里使用 Leaderd 作为触发快捷键
nnoremap Leaderd :call DoSomethingBasedOnMode()CR
vnoremap Leaderd :C-ucall DoSomethingBasedOnMode()CR
inoremap Leaderd Esc:call DoSomethingBasedOnMode()CR这样无论你处于普通、插入还是可视模式当你按下 Leaderd 时DoSomethingBasedOnMode 函数都会被调用并且根据当前的模式打印出相应的信息。注意插入模式下的映射会先退出插入模式因为 a:mode 不直接传递给函数而是通过这些映射的上下文来确定调用函数时的模式。
Vim 底部状态栏设置
在vim中输入:e $MYVIMRC打开vimrc配置文件后在里面添加下面这一段代码就行了
function! InsertStatuslineColor(mode)if a:mode ihi StatusLine ctermbold ctermbgGreen ctermfgWhiteelseif a:mode nhi StatusLine ctermbold ctermbgRed ctermfgWhiteelseif a:mode shi StatusLine ctermbold ctermbgCyan ctermfgWhiteendif
endfunctionautocmd InsertEnter * call InsertStatuslineColor(i)
autocmd InsertLeave * call InsertStatuslineColor(n)set statusline%{mode()}\ %F%m%r%h%w%(%{ff}/%Y)\ (line\ %l/%L,\ col\ %c)效果
推荐阅读 https://www.zhihu.com/question/24926908/answer/3026884403