【发布时间】:2012-02-05 23:20:09
【问题描述】:
我想映射 \c 以在 vim 中注释当前行(在该行的第一个非空白之前添加'//')和 \d 以删除行开头的'//'(取消注释)。
我在 vimrc 中添加了这两行:
imap \c <Esc>:s/^/\/\/ <CR>j$a
imap \d <Esc>:s/^\/\/ /<CR>j$a
但是当我在这一行中调用它时:
for (int i = 0; i < n; i++)
然后转换为:
// for (int i = 0; i < n; i++)
但我想将其转换为:
// for (int i = 0; i < n; i++)
我想要这个的原因之一是当我想让 vim 缩进这一行时,它会在该行的开头添加一个额外的制表符并将其转换为:
// for (int i = 0; i < n; i++)
我该怎么办?我以为 ^ 指的是行的第一个非空白字符,但事实并非如此。
P.S:我找到了这两个命令,但我不知道它们在做什么。你能向我解释一下吗(因为我需要记住它们,当我知道它们是什么时它们更容易记住)。如果其中任何部分是不必要的,请告诉我:
imap \c <ESC>:s,^\(\s*\)[^/ \t]\@=,\1// ,e<CR>j$a
imap \d <ESC>:s,^\(\s*\)// \s\@!,\1,e<CR>j$a
【问题讨论】: