vim 如何简化 频繁使用的命令

10086
  • 692

问题描述

vim的命令模式下,对于频繁使用的复杂命令, 应该怎么简化? 是不是设计快捷键就可以了?

本人经常使用一个替换命令 :0,$s/t/ /g 就是将tab键替换成4个空格.

对于新建的文件, 本人已经在配置文件中做了配置. 只是别人的文件经常出现tab键.

每次我都要替换一下.

我的问题

  1. 对于vim设置快捷键,我还不太熟悉, 可以用快捷键吗? 怎么设置? 用快捷键替换:0,$s/t/ /g 常用命令

  2. 可不可以,在vim打开文件的时候,自动转换, 这样连快捷键都不用设置了?

解决方法

首先感谢下面的回答者, 我是在他们给的解释上, 阅读帮助文档, 最后得出的个人觉得合理的方法

  1. 快捷键肯定是可以的, 但是需要记住快捷键. 对于我目前的问题, 我选择自动转换比较好.

  2. 首先:help ret 查看文档, 这里我想说的是, 替换的时候, 小心替换程序中字符串中的\\t 字符

  3. :help auto 查看文档, 不多说了.

  4. 查看.vimrc文件, vimrc文件中, 已经有了if has("autocmd")部分, 把对应的命令写在一起就可以了.

  5. autocmd BufRead *.cpp,*.h :ret这个自动替换命令, BufRead和BufReadPost是一样的. 这里要注意一下:模式选项,最好不要用*,具体替换什么类型的文件, 将后缀写出来.防止其他格式文件的误替换.

  6. 这个替换命令,只是替换Buf缓存中的内容, 如果没有修改, 没有保存. 是不会写入的. 直接退出的话, 没有任何修改的话, vim不会提示你保存, tab键依然存在. 这个不伤大雅.

最后,再次感谢下面的回答者.新年快乐.

回复
阅读 3.3k
4 个回答
liuchengxu
  • 720
✓ 已被采纳

先来抛砖引玉:

  1. 既然你已经有了操作,那么为这个操作设置一个快捷键是很简单的,比如这样将这个快捷键设置为 normal mode 下的 <Leader>ts -- nnoremap <Leader>ts :0,$s/t/ /g<CR>, 大概是 希望快捷键映射的模式 快捷键 操作

  2. 第二个可以使用 autocmd BufRead * :%ret! 4<CR>, 将整个文件的 tab 转换成 space,每个 tab 用 4 个 space 替代. ret 指的是 replace tab, 更多内容可以 :help ret, :help autocmd, :help event, :help BufRead.

vim 有一个命令叫做 :retab (我有可能记错了,但应该差不离),可以转换 tab 为 space,你可以查阅一下相关的 help,经常使用的话可以把它绑定一个按键。

完全可以自定义快捷键, 只需要玩好.vimrc 就可以了

宣传栏