人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

我什么都用Vim。编辑电子邮件时,我使用:

gqap(或gwap)

即使使用引号引导字符,也可以在逐段基础上轻松正确地重新格式化。为了实现此功能,我还添加了:

-c’集合fo=tcrq’-c’集合tw=76’

到外部调用编辑器的命令。一个值得注意的添加是将“a”添加到fo(formatoptions)参数中。这将在您键入和浏览内容时自动重新格式化段落,但可能会干扰或导致消息中错误或奇怪格式的问题。

其他回答

这里有些不明显的地方。如果你的$HOME中有很多自定义插件/扩展,你需要从su/sudo/。。。有时,这可能是有用的。

在~/.bashrc中:

export VIMINIT=“:so$HOME/.vimrc”

在~/.vimrc中:

如果$HOME=='/root'如果$USER=='root'如果是目录('/home/your_typeualusername')let rtuser='your_typeal_user'elseif是目录('/home/your_other_username')let rtuser='your_other_username'结束符其他的let rtuser=$USER结束符让&runtimepath=替换(&runtimepath,$HOME,'/HOME/'.rutter,'g')结束符

它将允许您的本地插件加载-无论您使用何种方式更改用户。

您可能还想将*.swp文件从当前路径中取出,并放入~/vimtmp(这将放入.vimrc中):

如果isdirectory(展开('~/vimtmp'))调用mkdir(展开('~/vimtmp'))结束符如果是目录(展开('~/vimtmp'))设置目录=~/vimtmp其他的设置目录=/var/tmp、/tmp结束符

此外,我使用一些映射来简化编辑-使ctrl+s可以像escape和ctrl+h/l那样切换选项卡:

inoremap<C-s><ESC>vnoremap<C-s><ESC>noremap<C-l>gtnoremap<C-h>gT

不确定这是否算是黑暗角落,但我只是刚刚学会了。。。

:g/match/y A

将把所有包含“match”的行拖(复制)到“a/@a”寄存器中。(大写字母a使vim附加了“yankings”,而不是替换之前的寄存器内容。)我最近在制作Internet Explorer样式表时经常使用它。

想查看您的:命令历史记录吗?

q:

然后浏览、编辑,最后执行命令。

曾经对两个文件进行过类似的更改,并在它们之间来回切换吗?(例如,源文件和头文件?)

:set hidden
:map <TAB> :e#<CR>

然后在这些文件之间来回切换。

在复制和粘贴到stackoverflow之前:

:retab 1
:% s/^I/ /g
:% s/^/    /

现在复制并粘贴代码。

根据意见要求:

表1。这会将选项卡大小设置为1。但它也会遍历代码并添加额外的制表符和空格,以便格式化不会移动任何实际文本(即文本在ratab之后看起来相同)。

%s/^I//g:请注意,^I是单击制表符的结果。这将搜索所有制表符并用一个空格替换它们。由于我们刚刚进行了重新标记,这不应导致格式更改,但由于将标签放入网站是一触即发的,因此最好将其删除。

%s/^//:用四个空格替换行首。由于实际上不能用任何东西替换行的开头,所以它在行的开头插入四个空格(SO格式需要这样做才能使代码突出)。

地图宏

我经常发现,像定义宏一样,动态定义一些键映射非常有用。这里的问题是,映射是递归的,并且一直执行到失败。

例子:

enum ProcStats
{
        ps_pid,
        ps_comm,
        ps_state,
        ps_ppid,
        ps_pgrp,
:map X /ps_<CR>3xixy<Esc>X

给予:

enum ProcStats
{
        xypid,
        xycomm,
        xystate,
        xyppid,
        xypgrp,

只是一个愚蠢的例子:)。

我完全知道所有的缺点——恰好我发现它在某些场合非常有用。此外,在工作中观看它可能会很有趣;)。