Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答

3
“ softtabstop”是用来做什么的?
我已经知道Vim中与标签有关的设置: ts sw expandtab smarttab sts 我的正常设置是set ts=4 sw=4 expandtab smarttab。 但是根据sts文档,如果expandtab未设置,它将尝试使用空格和制表符的组合来构成制表符大小的所需空白数。 对于这种设置,我真的想不出一个有用的方案:为什么有人想拥有固定数量的制表符和空格,而这些制表符和空格可能会使事情搞砸了?我能想到的唯一好处是减少了字符数,从而减小了文件大小,这对我来说似乎很奇怪。

4
如何使Vim忽略所有用户配置,就像它是全新安装的一样?
为了确保行为不受我的个人配置的影响,我想以一种忽略所有用户安装的配置文件的方式启动Vim ,就好像Vim刚刚是第一次全新安装并且用户已经在运行它一样立即。 这在FAQ中得到解决,该FAQ提示答案是使用以下命令启动Vim: vim -u NONE -U NONE -N -i NONE 这可以解决大部分问题,但是该runtimepath选项仍然包含~/.vim,尤其是,~/.vim/after(例如,如果我随后打开文件类型检测并更改文件类型,~/.vim/after/syntax/the_relevant_filetype.vim则将执行其中的代码)。 我可以通过在启动时调用以下命令来解决此特定问题: :set runtimepath-=~/.vim :set runtimepath-=~/.vim/after ...但是我不确定是否: 这是一个可靠的解决方案:是那些唯一可以使用户配置生效的路径吗?还有什么我没想到的吗? 有一种实现所需结果的更好方法。 *通过使用--cmd或-u vimrcshell参数,或仅通过手动键入它们。 编辑:这是我要解决的这类问题的一个具体示例。(尽管我希望该解决方案可以解决我可能尚未遇到的任何其他可能的问题。): 创建一个文件〜/ .vim / after / ftplugin / c.vim,其中包含以下内容: noremap i :echom "This is not default behaviour"<CR> 现在,我们有一些要忽略的用户安装配置。让我们测试常见问题解答建议的解决方案。 使用以下命令运行Vim: vim -u NONE -U NONE -N -i NONE 输入命令: …
21 startup 

3
vim中的拆分分隔符可以小于整个列宽吗?
我使用平铺窗口管理器(很棒)+终端多路复用器(tmux)+在vim中拆分。我根本没有窗户装饰,因此,如果程序的内容没有放弃,那么它们之间就不会有视觉上的分裂。我对这种范例非常满意,因为无论如何我都使用多个监视器并通过屏幕对任务进行分组。如果两个窗口没有并排的理由,它们将不会首先出现。 但是,这会造成一些视觉上的不和谐,在视觉上最明显的分裂在语义上是最不重要的。 Xorg窗口‹|›窗口=完全没有 Tmux窗格‹|›窗格= 1像素分隔线 Vim split ‹|› split = 1个字符宽的彩色列 这是一个示例,每个窗口,窗格和vim拆分并排显示: 即使没有单击完整分辨率版本,您看到的白色分隔线也是屏幕上vim窗格中最不重要的分割。(请注意,vim会话右侧的灰色列实际上是第80列突出显示的内容,尽管我经常使用该大小,但它不是任何分隔符。) 我知道如何更改拆分中绘制的字符或降低配色方案的对比度。我想做的是使用与tmux相同的分割条,它不会占用任何宽度,因为它是在列之间而不是在列之间绘制的。基于终端的vim是否可能?Gvim?Neovim?裸露在外观上不显眼的分隔符,分隔柱是否可以完全关闭? PS使用外观相似的分隔符之所以有意义,是因为我使用相同的键绑定在tmux窗格和vim拆分之间导航。相同的键在它们之间无缝导航,只有视觉边界也相同时才有意义。

4
删除“复合”词的最简单方法是?
如果不是“ composite”,则表示歉意。我的意思是: Hi, I-am-a-composite-word and we are not 我只想删除复合词。在命令模式下,如果将光标移至I,然后重复dw几次,或者键入dw一次更好,然后再按几次.,就可以解决问题。但是,由于种种原因,我发现自己白天经常这样做,因此我想知道是否有更简单的方法。 PS我不会认为该命令d9w是一个更简单的方法。计数长单词和破折号不是我“简单”的想法。

4
如何在打开花括号之前意外地创建一个不间断空间?
我意识到这是一个奇怪的问题,它甚至可能不是发布它的合适论坛。但这已经是一个问题了几年了。 有时,每个月说一次,当我编程时,在打开花括号之前,我会引入一个No-Break空间而不是常规空间。 发生这种情况,可以说我在写作时 () { 这会导致神秘的棉绒虫。不适用的CSS子句。直到我记得可能是这样。 据我所知,这仅发生在vim中,但是由于它是我的主编辑器,因此它可能从未在其他软件中发生过。但是,即使我的同事使用与我相同的键盘布局,我上一次工作中的同事都没有遇到过这个问题。我是唯一定期使用vim的人,这就是为什么我在这里发贴... 至少在Ubuntu 14.04、16.04和Mac OS X中,这发生在我身上。 :set list 没有透露。 我正在使用法语-加拿大语键盘布局,这意味着大括号字符是通过按alt +` 我对这种引起问题的方式感到非常厌倦,这种情况很少被我忘记。 如果您不能告诉我为什么这种情况持续发生,以某种明显的方式突出显示该字符的配置将是一个合适的答案,并且确实可以解决此问题。

4
更好的差异配色方案
我已经开始在工作中使用vim的diff模式,我注意到的一件事是颜色真的很明亮,这在长时间尝试查找大型文件中的差异时无济于事。 人们是否已经定制了任何配色方案,以使差异模式在眼睛上更容易?
20 vimdiff 

2
如何使用行号将行复制到光标所在的位置?
很多时候我处于类似情况: 1. <Line 1> 2. <Line 2> 3. <Line 3> 4. <Cursor is here> 5. <I want to copy line 1 here> 一个简单的解决方案是mm:1<CR>yy`mp-在第4行做一个标记,转到第1行,复制它,回到该标记并粘贴。 是否有更短/更多的解决方案?我经常这样做,因此很高兴为此做一个映射。

1
为什么不普遍使用Vimball?
我已经看到很多Vim插件似乎没有Vimballs。 Vimball基本上是vim知道如何安装的插件的压缩包。因此,它们比使用起来更为方便,tar -xvf 因为您不必/不必担心tarball的目录结构以不同的方式嵌套,例如,它是从.vim还是在.vim目录结构中嵌套的,或者压缩包中是否有一个与插件同名的父文件夹,等等。 我在Github上看到的插件越来越少,也没有看到。 是否有积极尝试弃用它们? 如果可以,为什么? 这是因为我们现在有Vundle,Pathogen等吗?



2
在单个vim缓冲区中可以使用两种不同的颜色背景吗?
我正在寻找一种可能的解决方案,具体取决于上下文,例如在此高级文本示例中,在单个vim缓冲区中应用两种不同的背景颜色。 一种用例是对标记文件中的代码片段进行不同的颜色编码,使它们更加突出。 但是,我从未见过这样的设置示例。 vim完全有可能吗?

2
为什么Vim for Debian不用剪贴板就可以编译?
我很好奇为什么Vim的默认Debian软件包(通常通过来的软件包sudo apt-get install vim)没有使用剪贴板支持进行编译? 常规-clipboard或未-Xterm-clipboard启用,为什么? 在没有安装X服务器的Debian安装中,可能有理由不包括-Xterm-clipboard,而是常规的-clipboard? 对于为什么这样做的任何见解都会有所帮助。 (澄清:我知道我可以用这些标志编译Vim,我只想知道为什么默认情况下不启用它们。)
20 linux  installing 

1
“映射的键序列”和“键代码”之间有什么区别?(timeoutlen v ttimeoutlen)
在VIM手册说,我们可以使用timeoutlen指定的超时长度映射的键序列,并且可以使用ttimeoutlen指定的超时长度密钥代码: 一个有用的设置是 :set timeout timeoutlen=3000 ttimeoutlen=100 (三秒钟后映射超时,十分之一秒后密钥密码超时)。 什么是关键代码?它们与映射的键序列有何不同? 我知道映射键序列的示例jk来自以下映射: inoremap jk <esc> 在此示例中,当我处于插入模式并键入时j,vim将等待timeoutlen毫秒让我按一下,然后k再确定我的意图。 但是什么是关键代码,ttimeoutlen它如何对其产生影响?谢谢。

4
如何更改缩进大小?
我刚刚发现我可以使用:<<和在Vi中轻松缩进和缩进>> 默认情况下,它添加一个tab字符。现在我想知道,这是否可以通过我的配置进入多个空间.vimrc?我该怎么办呢?

2
如何一次重新加载所有缓冲区?
在中的功能分支上工作时git,我经常需要存储更改以将错误修复提交到主分支。完成更改后,I git stash pop会更新文件上的时间戳。 即使文件相同,但下次尝试保存时,我得到: 警告:文件自读取以来已更改!!! 您真的要写(y / n)吗? 我不想每次在磁盘上更改文件时都自动重新加载文件,仅当I时git stash pop。 现在,我分别手动重新加载每个缓冲区(:e)。我有什么办法可以在一个命令中做到这一点吗?
20 buffers  load 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.