Vim中是否有简洁快捷键可删除至词尾或下一个标点?
解决Vim中SQL下划线标识符的快捷删除问题
方法1:调整单词识别规则(最省心,复用原有快捷键)
Vim默认不把下划线归为单词的一部分,只要修改iskeyword选项,就能让你熟悉的dw/daw直接适配SQL的下划线分隔标识符:
在~/.vimrc(或init.vim)里添加一行:
set iskeyword+=_
生效后:
dw:删除从光标到下一个非标识符字符(句号.、空格、行尾都算)的内容,完全满足你“不用判断目标,直接删到词尾或标点”的需求。比如在user_info.id里,光标在u上时dw会删除整个user_info,光标在info的i上时会删到info末尾。daw:直接删除整个下划线分隔的标识符(比如user_info),和你原来删除普通单词的逻辑完全一致。
这个方案不用记新快捷键,直接复用你已经习惯的操作,零额外学习成本。
方法2:自定义快捷键(适合不想全局改规则的情况)
如果不想全局调整Vim的单词定义,可以自定义映射实现一键操作:
" 映射<leader>d为删除到下一个非字母/数字/下划线的字符 nnoremap <leader>d d/\v[^a-zA-Z0-9_]<CR> " 映射<leader>aw为删除整个标识符 nnoremap <leader>aw daw
不过对于高频编辑SQL的场景,方法1显然更高效。
临时生效的方式
如果只是临时需要这个功能,不用修改配置,在当前Vim会话里执行:
:set iskeyword+=_
退出Vim后会自动恢复默认设置。
内容的提问来源于stack exchange,提问作者crazybilly
相关产品推荐
相关产品推荐

