Vi & Vim

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

2
如何从另一个git分支打开文件?
我想从当前git存储库中的另一个分支打开文件。我已经看到了这样的问题,但是将其与Vim结合使用的建议非常繁琐(通过管道传递到Vim,打开stdin,手动设置文件类型等)。有没有更简单的方法来保留语法突出显示,文件类型设置等? 如果有帮助: 我安装了逃犯插件(尽管很少使用)。 我不需要修改它。 该文件可以是当前打开的缓冲区的文件,也可以是其他文件。
35 git 

5
如何将文件保存在尚不存在的目录中?
假设我启动Vim编辑尚未创建的目录中的新文件: vim nonExisitingDirectory/newFile.txt Vim会很高兴地向我显示一个空缓冲区,我可以开始编写新文件了。但是,当我想将文件写入磁盘时,出现此错误: E212: Can't Open file for writing. 我认为这是因为该目录尚不存在。有没有办法强迫Vim为我创建目录?
35 save  autocmd 

10
如何注释掉在可视模式下选择的一组行?
如何在可视模式下选择多行注释掉?如何使它特定于语言? 例如,如果选择了前四行: def foo(a,b): for each in (a,b): print each return a+b print "2" 命令/宏的操作应导致以下结果(在python中): #def foo(a,b): # for each in (a,b): # print each # return a+b print "2"

2
:set background = dark有什么作用?
我没有投入color xxx我的.vimrc。所以我第一次打开我的笔记本时看到了.vimrc。 :color给我default在这里。 然后我输入:color darcula。它改变为此。 :colordarcula(自然地)给我在这里。 然后我输入:set background=dark。它改变为此。 :color给我default(令人惊讶)。 所以我的问题是,究竟是做:set background=dark什么的? 我尝试过:h background,没有发现任何帮助。我知道该命令实际上并不会改变背景,只有vim会相应地改变颜色。但是我仍然想问这个问题。因为我用的颜色真的很高兴后:color darcula和:set background=dark所以我不知道怎么写我自己的配色方案,而不必把set background=dark我的.vimrc。 我从@statox那里得到了建议,并放在set background=dark了我的最后一行darcula.vim。然后color darcula给了我第三张截图。但是,当我将其放在第一行时,color darcula给了我第二张屏幕截图。还将其set bg=dark更改为第三个屏幕截图。 我假设将其放在第一行,是告诉vim这种颜色方案是为深色背景设计的。通过对比,将其放在最后一行,让vim假定此颜色方案是为浅色背景设计的,然后让vim自己更改其中的某些颜色(当它处理最后一行时)。 如果我假设发生的事情是真的,那么我的问题仍然没有答案。vim到底发生了什么变化,当我使用set bg=dark后加载了浅色方案时? 我的整个vim配置位于https://github.com/MichaelMa2014/.vim




5
如何使用可选参数制作vimscript函数?
我想制作一个具有可选参数的函数。 在python中,我将执行以下操作: def functionName(arg1,arg2=false,arg3=false): if arg2: #Do stuff with arguments else: #Do stuff without arguments 我已经尝试做过function FunctionName(arg1,arg2=false,arg3=false),但是这只会给我一个错误,指出参数无效。 我该如何在vimscript中执行此操作?
33 vimscript 

6
除换行符外,是否可以删除整行?
在vim中,对我而言,一个相当常见的操作是删除所有行的内容,而不是删除行本身(即不是换行符),因为我是强迫性的并且喜欢使文件中没有空格。 有内置的vim方法吗?也许是d<movement command>手术? 到目前为止,我所拥有的最好的是(在有关方面)0d$。有没有更快的方法?


6
仅将设置应用于目录树
在我的工作中,我们使用ts2 的标准。我个人的喜好是4,这是我用于爱好项目的方式,而我们继承的另一个项目的约定为ts=8。 我还想基于项目设置一些其他设置(例如折叠)。将这些设置基于文件类型或根据文件使用情况自动检测它们不是很好的选择,因为我要遵守每个项目的约定。 我可以使Vim使用适用于项目(目录树中的所有内容)的设置文件,而不向所有文件添加模型机吗?
33 vimrc  filesystem 

2
我可以在正常模式下查看按键的历史记录吗?
我知道Vim保留历史记录,包括以前的命令,搜索,跳转位置,更改以及其他可能的信息。 使用showcmdset时,Vim还会显示您到目前为止为普通模式命令输入的键,直到执行该命令为止。 有时,在正常模式下,我输入错误并且发生了动作。我可以撤消这些操作,但是有时我想知道我的失误期间如何进行编辑。有时编辑看起来很酷,我想知道将来如何重复。 那么,有什么方法可以查看正常模式下的按键历史,最好是在发生实际的编辑或动作(例如运动或模式更改)时进行划界?

3
如何获得智能的C ++自动完成功能
一些编辑器(例如Windows上的Visual Studio)会执行C ++自动补全功能,从而可以理解C ++。例如,给定: #include <vector> int main(void) { std::vector<int> v; v.i 在Visual Studio中,自动补全知道std::vector<int>以i开头的唯一方法是insert。 是否可以在vim中获得这种自动完成功能?

3
我可以在Vim或gVim中使用非等宽字体吗?
有没有办法在vim或中使用非等宽字体gvim? 我尝试使用以下方式更改gVim的字体: :set guifont=Dejavu\ Serif\ 12 但这给了我一些难看的结果: 如果使用菜单(编辑->选择字体),我将得到相同的结果 :help guifont 说: Note that the fonts must be mono-spaced (all characters have the same width). An exception is GTK 2: all fonts are accepted, but mono-spaced fonts look best. 因此,我认为上述结果算作“看起来不是最好的”吗?可以通过某种方式对此加以改进吗? 我还尝试在终端(xterm)中设置非等宽字体,但这似乎具有大致相同的效果: 我不介意为此btw使用其他终端模拟器。
32 terminal  gvim  font 

3
你如何在Vim中“ chomp”一个字符串?
假设您运行以下vimscript: let @z = system("date") 这会将当前日期的字符串版本放入z寄存器,但是该字符串将以不需要的换行符结尾。是否有内置方法(类似于Perl的方法chomp)来消除字符串的尾随换行符?
32 vimscript 

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.