小编nel*_*rom的帖子

获取Vim中设置的当前值

有没有一种简单的方法可以找出指定Vim设置的当前值?如果我想知道tabstop我可以运行的当前值:

:set tabstop
Run Code Online (Sandbox Code Playgroud)

没有通过论证,Vim会告诉我当前的价值.这适用于许多设置,但对于那些无论是真还是假都没有好处.例如,如果我想找出当前的值expandtab,运行:

:set expandtab
Run Code Online (Sandbox Code Playgroud)

实际上会启用expandtab.我只是想知道它是否启用.

这样做我想要的:

:echo &l:expandtab
Run Code Online (Sandbox Code Playgroud)

但它似乎相当冗长.有更快的方法吗?

vim

247
推荐指数
4
解决办法
5万
查看次数

按文件类型设置Vim空白首选项

在我的工作中,我需要按照家庭风格进行缩进,如下所示:

  • 编码html和ruby时有2个空格
  • 编码javascript时的选项卡,建议使用tabwidth = 4

为每种文件类型指定不同的空白首选项的最佳方法是什么?

vim whitespace preferences

147
推荐指数
4
解决办法
4万
查看次数

如何让Vim的`J`和`gq`命令在一段时间后使用一个空格?

当我使用Vim的J命令时,大多数行都连接一个空格用于填充.但经过一段时间后,Vim总是使用两个空格.请看以下示例:

This ends with a comma,
but this ends with a period.
Join with 'J' and what do you get?
Run Code Online (Sandbox Code Playgroud)

对我来说,结果是:

This ends with a comma, but this ends with a period.  Join with 'J' and what do you get?
Run Code Online (Sandbox Code Playgroud)

逗号后面有一个空格,后面有两个空格.如果使用gq命令重新格式化段落,则会出现同样的情况.

是否有一个我可以修改的设置,使Vim在这段时间后只使用一个空格?

vim formatting

90
推荐指数
3
解决办法
5696
查看次数

Tab Vs Vim中的空间首选项

Vim非常适应标签Vs. 空间偏好.据我了解,该tabstop设置表示制表符的宽度.该shiftwidth设置指定使用<<>>命令时递增/递减的列数,而softtabstop设置会影响Tab在插入模式下按键时要插入的空白量.如果expandtab启用,则Tab键会插入softtabstop空格字符数.而用expandtab切断时,按下Tab键会插入的最小可能数目的匹配标签+空格字符softtabstop.(如果我错了,请纠正我.)

最后一点让我想知道:有一个你不想要的实际案例shiftwidth == tabstop && tabstop == softtabstop吗?我想不出一个.就我而言,如果我可以在一个单独的任务中将所有这三个设置为相同的值,那将是最方便的.例如:

:set stab=4
Run Code Online (Sandbox Code Playgroud)

这相当于运行:

:set tabstop=4 softtabstop=4 shiftwidth=4 
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议如何做到这一点?


UPDATE

感谢迄今为止对php,hobbskaiser.se的回复.我不是单独回复每个人,而是在这里更新问题.

Softtabstop已关闭expandtab

我在上面说过,关闭expandtab后,按Tab键会插入尽可能少的匹配的tab +空格字符softtabstop.我支持这一点,但我认为我需要解释我的意思.我将通过几个例子尝试这样做.要继续,请运行:set list以便您可以看到制表符.

tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab

在插入模式下,按Tab键可插入2个空格字符.按tab键的第二时间,并且代替插入2个更多的空间字符(总共4个空格字符)它替换先前的2位具有单个制表符.Tabstop设置为4,因此单个制表符的宽度与4个空格的宽度相同.

tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab

在插入模式下,按Tab键可插入1个制表符加2个空格.制表符的宽度为4,因此总宽度为6,这是使用3个字符实现的.再次按Tab键可插入两个制表符,并删除先前插入的两个空格.总宽度为12,使用3个字符即可实现.

在这两个示例中,Vim都插入了与softtabstop匹配的最小可能数量的制表符+空格字符.

如果我正在使用expandtab关闭,我看不到自己想要通过将softtabstop设置为与tabstop不同的值来实现额外的粒度控制.它仍然将是有益的我能够设置tabstop,softtabstopshiftwidth用一个命令相同的值.

expandtab是否使softtabstop冗余?

tabstop=4 softtabstop=0 shiftwidth=4 …

vim whitespace preferences

86
推荐指数
3
解决办法
2万
查看次数

在MongoDB mapreduce中,如何展平值对象?

我正在尝试使用MongoDB来分析Apache日志文件.我已经receipts从Apache访问日志创建了一个集合.以下是我的模型外观的精简摘要:

db.receipts.findOne()
{
    "_id" : ObjectId("4e57908c7a044a30dc03a888"),
    "path" : "/videos/1/show_invisibles.m4v",
    "issued_at" : ISODate("2011-04-08T00:00:00Z"),
    "status" : "200"
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个MapReduce函数,它按issued_at日期字段对所有数据进行分组.它总结了请求的总数,并提供了每个唯一路径的请求数的细分.以下是输出结果的示例:

db.daily_hits_by_path.findOne()
{
    "_id" : ISODate("2011-04-08T00:00:00Z"),
    "value" : {
        "count" : 6,
        "paths" : {
            "/videos/1/show_invisibles.m4v" : {
                "count" : 2
            },
            "/videos/1/show_invisibles.ogv" : {
                "count" : 3
            },
            "/videos/6/buffers_listed_and_hidden.ogv" : {
                "count" : 1
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使输出看起来像这样:

{
    "_id" : ISODate("2011-04-08T00:00:00Z"),
    "count" : 6,
    "paths" : {
        "/videos/1/show_invisibles.m4v" : {
            "count" : 2
        },
        "/videos/1/show_invisibles.ogv" …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb

34
推荐指数
3
解决办法
7419
查看次数

找出vim中特定关键字/符号所属的突出显示组

我是从TextMate来到Vim,我想自定义我的vim colorscheme.如果我能找出任何特定的单词或符号属于哪个突出显示组,那将是非常有用的.在TextMate中,我会将插入符号放在有问题的单词/符号上,然后点击ctrl-shift-p,工具提示会显示如下:

text.html.basic
meta.tag.structure.any.html
string.quoted.double.html

从这些信息中,编辑TextMate颜色主题以将格式应用(或删除)到相关文本非常简单.

在Vim中,如果我想更改某个单词或符号的格式,我不知道从哪里开始.有没有相当于TextMate的ctrl-shift-p?

vim textmate themes

19
推荐指数
2
解决办法
5165
查看次数

vim命令可以映射到> 1修饰符的键组合(例如ctrl-alt-v)

是否可以将vim命令映射到涉及多个修饰符的键组合?例如:ctrl-alt-v.

据我所知,唯一可以与另一个结合使用的修饰键是移位.例如<C-v><C-V>.或者我错过了什么?

vim macvim

15
推荐指数
1
解决办法
5378
查看次数

为插入模式创建映射,但不为自动完成子模式创建映射

我在我的vimrc中有这些插入模式映射:

imap <C-e> <C-o>A
imap <C-a> <C-o>I
Run Code Online (Sandbox Code Playgroud)

他们制作ctrl-a并将ctrl-e光标移动到行的开头和结尾,而不会留下插入模式, emacs键绑定.

我刚刚意识到<C-e>映射引入了与自动完成子模式的冲突.CTRL-E的文档说明:

When completion is active you can use CTRL-E to stop it and go back to the
originally typed text.
Run Code Online (Sandbox Code Playgroud)

我的<C-e>映射干扰了这一点.有没有办法ctrl-e只有在自动完成不活动时才可以跳到行尾?

vim

14
推荐指数
1
解决办法
1111
查看次数

如何使用aws cli更改对象的内容类型?

我在Amazon S3中存储了几个对象,其内容类型我需要更改text/htmlapplication/rss+xml.我认为应该可以使用复制命令执行此操作,为源和目标指定相同的路径.我正在尝试使用AWS cli工具执行此操作,但我收到此错误:

$ aws s3 cp s3://mybucket/feed/ogg/index.html \
            s3://mybucket/feed/ogg/index.html \
            --content-type 'application/rss+xml'
copy failed: s3://mybucket/feed/ogg/index.html
to s3://mybucket/feed/ogg/index.html
A client error (InvalidRequest) occurred when calling the
CopyObject operation: This copy request is illegal because it is
trying to copy an object to itself without changing the object's
metadata, storage class, website redirect location or encryption
attributes.
Run Code Online (Sandbox Code Playgroud)

如果我为源和目标指定不同的路径,我不会收到错误:

$ aws s3 cp s3://mybucket/feed/ogg/index.html \
            s3://mybucket/feed/ogg/index2.html \
            --content-type 'application/rss+xml'
copy: s3://mybucket/feed/ogg/index.html
to s3://mybucket/feed/ogg/index2.html
Run Code Online (Sandbox Code Playgroud)

即使命令成功完成,index2.html也会使用text/html内容类型创建对象,而不是 …

content-type command-line-interface amazon-s3 aws-cli

14
推荐指数
2
解决办法
9455
查看次数

如何使用变量来干燥Vim colorthemes

我想通过用变量替换#ABCDEF颜色来整理我的Vim配色方案文件.例如,我想替换这个:

highlight String     guifg=#61CE3C
highlight Identifier guifg=#61CE3C
highlight Type       guifg=#84A7C1
Run Code Online (Sandbox Code Playgroud)

用这样的东西(伪代码vimscript):

my_string =#61CE3C
my_type   =#84A7C1

highlight String     guifg=my_string
highlight Identifier guifg=my_string
highlight Type       guifg=my_type
Run Code Online (Sandbox Code Playgroud)

我不确定vimscript是否将十六进制颜色视为字符串或十六进制数字.显然它是一个字符串,因为这似乎工作:

:highlight Normal guifg='#ffffff'
Run Code Online (Sandbox Code Playgroud)

所以我想我会试试这个:

:let my_color='#ffffff'
:highlight Normal guifg=my_color
Run Code Online (Sandbox Code Playgroud)

但这会产生错误"E254:无法分配颜色my_color".任何人都可以建议一种方法来使这项工作?

vim themes colors

13
推荐指数
2
解决办法
2464
查看次数