微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重新定义用于在 Vim/GVim 中编辑 Clojure 代码的单词移动停止字符

如何解决重新定义用于在 Vim/GVim 中编辑 Clojure 代码的单词移动停止字符

在 Vim/GVim 中编辑 Clojure 代码时,我经常使用 w word-motion 命令(以及它的表亲 b 用于反向移动 word-motion)。但是,在认的 Clojure 配置中,Vim/GVim 会忽略常见的单词分隔符字符,例如连字符、斜杠和句点。以下 Clojure 符号显示了所有三个:

clojure.core/select-keys

在这种情况下,我们希望 wb 字动作命令在任何非字母字符处停止。

如何修改认的 Vim 配置以识别 Clojure 中的这些单词边界?

解决方法

答案是使用 Vim 功能 autocmd 来修改 Clojure 文件的 iskeyword 设置。具体来说,将这些行添加到您的 ~/.vimrc 文件中:

" Remove the period `.`,hyphen,`-`,and slash `/` as keyword chars so "word" movement will stop 
" on these chars (i.e. in a namespace like `proj.some.long.ns.name` or a symbol like `my-clojure-sym`)
" Must do one at a time for 'string lists'
autocmd BufWinEnter,BufNewFile,BufRead *.clj* set iskeyword-=.
autocmd BufWinEnter,BufRead *.clj* set iskeyword-=-
autocmd BufWinEnter,BufRead *.clj* set iskeyword-=/

加载带有后缀 .clj* 的文件时,我们从 iskeyword 字符串列表中删除了句点、连字符和斜杠这三个字符,因此它们不再被识别为“关键字”的一部分.也就是说,它们变成了单词分隔符。然后,wb 字动作命令将停在那里,正如我们所寻求的那样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。