vim - 重新定义单词移动停止字符以在 Vim/GVim 中编辑 Clojure 代码
问题描述
在 Vim/GVim 中编辑 Clojure 代码时,我经常使用w
word-motion 命令(以及它的表亲b
用于向后 word-motion)。但是,在默认的 Clojure 配置中,Vim/GVim 会忽略常见的单词分隔符,例如连字符、斜杠和句点。以下 Clojure 符号显示了所有三个:
clojure.core/select-keys
在这种情况下,我们希望w
和b
word-motion 命令在任何非字母字符处停止。
如何修改默认 Vim 配置以在 Clojure 中识别这些单词边界?
解决方案
答案是使用 Vim 功能autocmd
来修改iskeyword
Clojure 文件的设置。具体来说,将这些行添加到您的~/.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,BufNewFile,BufRead *.clj* set iskeyword-=-
autocmd BufWinEnter,BufNewFile,BufRead *.clj* set iskeyword-=/
加载后缀为 的文件时.clj*
,我们从字符串列表中删除三个字符句点、连字符和斜杠iskeyword
,因此它们不再被识别为“关键字”的一部分。也就是说,它们成为单词分隔符。然后,w
和b
word-motion 命令将停在那里,正如我们正在寻找的那样。
推荐阅读
- react-native - 如何找到两个元素 React Native 之间的距离?
- java - 一行在spring boot Jpa .findall()响应restfull api中重复多次
- wpf - 从资源字典中的事件处理程序调用 Viewmodel 方法
- python - 在 Keras 中使用 CNN 模型获得非常差的准确性
- r - 在R中绘制不同颜色的时间序列
- python - 如何散列一个矩阵
- .net - Trace.CorrelationManager.ActivityId 的 ECS 字段引用中的等价物是什么?
- c# - C# 使用动态键反序列化 JSON
- microservices - 微服务:数据共享与 API 组合
- debugging - 链接独立可执行文件时对“core:fmt::write”的未定义引用