我正在尝试在 Vim 中使用内联进行注释重新映射if,以检查它是否已被注释。这是我已经拥有的,当然它不起作用哈哈:
imap <c-c> <Esc>^:if getline(".")[col(".")-1] == '/' i<Delete><Delete> else i// endif
Run Code Online (Sandbox Code Playgroud)
我想做的是检查第一个字符是否是 a /。如果是 a/则删除该行的前两个字符,如果不是 a则在该行前面/添加两个字符。//
我原来的情况是这样的:
imap <c-c> <Esc>^i//
Run Code Online (Sandbox Code Playgroud)
这非常有效,但我想要的是能够随心所欲地评论/取消评论。
我试图在 VIM 中映射 Ctrl-y 以删除它在光标下匹配的括号之间找到的任何内容。它有效,但它也会擦除括号。这是我目前使用的:
imap <c-y> <Esc><Right>d%<Insert>
Run Code Online (Sandbox Code Playgroud)
这很好用,除非我说它也删除了光标下的内容(即匹配的括号)。我确实找到了这个:
diX
Run Code Online (Sandbox Code Playgroud)
X成为您正在寻找的支架;[,(,',等。
该i命令的问题是我不想为我定期执行此操作的每个括号映射一个新键,我喜欢%它匹配光标下的任何内容,无论是字母s甚至。
有什么办法可以让这个保留括号?
编辑:对不起,举个例子。我有以下文本示例,(* 代表光标):
(*text to be erased between brackets)
"*text to be erased between brackets"
'*text to be erased between brackets'
[*text to be erased between brackets]
{*text to be erased between brackets}
Run Code Online (Sandbox Code Playgroud)
基本上在每个示例中,我希望我的光标位于有问题的括号顶部,然后当我点击Ctrl-y它时,它从插入模式移动到正常模式,删除光标下括号之间的所有文本或任何内容(在那个点下)因为我转移到正常模式然后<Right>) 到同一个支架的下一个。
所以以上所有这些都会变成:
()
""
''
[]
{}
Run Code Online (Sandbox Code Playgroud)
无需移除周围的括号。随着d%括号被删除。
有没有办法使用Vim脚本或搜索/替换来删除鬼换行?我遇到过这样的情况,当我必须编辑文件时,其他使用蹩脚软件的开发人员已经在附图中留下了双重换行符.
我很想在Vim找到一种方法来删除所有那些愚蠢的双间距垃圾,所以它实际上看起来应该如此.

我目前正在使用VIM为Mutt编写电子邮件,它的效果很好,但是自动翻译让我发疯.当我从muttrc文件中调用它时,我当前设置自动换行,如下所示:
-c 'set fo+=aw' -c 'set tw=76'
Run Code Online (Sandbox Code Playgroud)
这很完美,正是我所寻找的.问题是我也在mutt中使用标题,这样当我写一封电子邮件时,标题首先出现在我的作者中:
From: Name <me@me.com>
To:
Cc:
Bcc:
Subject:
Reply-To:
Message here
Run Code Online (Sandbox Code Playgroud)
问题是VIM现在包装所有东西,包括标题.如果我没有输入CC,那么当我进入主题行时,BCC就像这样包装:
Cc: Bcc: Subject:
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一种方法来阻止它在编辑器的第一个空行之前包装任何东西?有任何想法吗?
我正在寻找以下可能的解决方案.我将数据存储在表中,以跟踪客户在数据库中想要的特殊增量编号.这是他们内部使用的特殊号码.
我想要做的是当我选择它时自动在表格中增加这个数字.因此,我没有使用相同ID号的其他交易的问题,来自使用该系统的其他人.
所以我想选择当前的数字并一次增加一个,所以我没有重复.如果可能的话,我该怎么做呢?