Vi & Vim

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

2
从这里转到X个字节
如何从当前光标位置(包括换行符)开始向前移动X个字节? [count]go可用于从缓冲区的开始向前移X个字节。我尝试了一下Shift + V, G, [count]go(假设[count]go将从选择的开头开始计数),但是不幸的是,这也没有用,因为它go仅从缓冲区的开头开始计数。 我还尝试:set rulerformat=%o显示当前字节偏移量(如跳转到字节偏移量并显示为字节偏移量所示),将数字添加到我的头部并最终发出[count]go。这行得通,但不是很实用...

1
如何防止(或至少提示确认)非常大的数字被用作前缀命令?
它的发生频率不像您想象的那么频繁,但偶尔会发生,而且我什至没有养猫。 基本上,如果您混搭数字行或数字键盘,然后碰巧触发了可重复命令的键盘,则可能会无意间命令Vim执行数千,百万甚至十亿次的任务。这很容易失控,并可能导致数据丢失。 所以我想知道我们是否可以更改源代码中的配置或内容以进行健全性检查以防止此类DoS。

1
python的参数完成
有没有办法为python获取参数完成? 我目前正在使用ctags,python-mode和YouCompleteMe的组合,但是我缺少一个自动完成功能参数(或至少显示它们)的功能。 是否有支持该功能的插件? 我正在使用vim / gvim 7.4和Ubuntu 14.04

1
几行指令
有没有一种方法可以将单行指令分成几行? 例如,我想转型 setlocal variable_name = condition1 ? "1" : condition2 ? "0" : condition3 ? "a long string" : "another long string" 进入 setlocal variable_name = condition1 ? "1" : condition2 ? "0" : condition3 ? "a long string" : "another long string" 但是当我像上面那样尝试时,会引发“无效参数”错误。
9 vimscript 

2
问题:垂直移动线会关闭折痕
当我用m(例如:m+1)移动线时,所有折叠都关闭了。然后,我可以再次打开折叠,zv光标将位于我移动到的位置。我使用带{{{ }}}标记的折叠功能,并且set foldmethod=marker在我的.vimrc文件中使用。 如何在移动线时防止vim关闭折叠?
9 folding 

4
我可以使用“ gf”(或类似名称)打开文件并跳到搜索词吗?
有没有办法让vim的gf命令(或类似的东西)识别+{cmd}文件路径的参数? 您可以执行以下操作来启动vim并直接转到搜索词: $ vim +/coding_effort ~/project/file 同样,在命令模式下,您可以执行以下操作: :e +/coding_effort ~/project/file 我经常记笔记并参考其他文件,例如: For more info see +/coding_effort ~/project/file where there's a detailed discussion. 我希望能够选择+/coding_effort ~/project/file,输入类似内容gf,并且让vim做正确的事情。

3
如何将突出显示的源代码输出到文件中以在vim外使用
在我的工作场所中,我想介绍我为解决我们遇到的一些问题而开发的自定义语言。为了简化开发,我为此特定语言创建了自己的vim语法文件。 现在,我需要将其呈现在另一台没有该语法文件的计算机上。就我所知,它甚至可能没有安装vim(但我对此表示怀疑)。 如果我能使less -r一个文件获得与我自己的计算机上相同的语法突出显示,那将是完美的。 但是,我不知道如何在保留颜色的同时复制和粘贴(在Debian上的gnome终端中),或者如何从vim中以语法高亮显示文件作为原始控制字符。我对从vim中找到解决方案更有信心,但是我不知道该怎么做。 您是否知道以其他方式将打开的文件的语法突出显示为ANSI raw-control-chars的方式输出到另一个文件中?

1
使用YouCompleteMe时如何限制建议数量?
我正在开发相当大的php代码库(约130万行代码)。我已经生成了标签,现在当我输入类似 $data-> 当试图从标签中获取所有可能的补全列表时,YouCompleteMe确实非常落后,并且基本上冻结了Vim。有没有办法来解决这个问题?例如,通过限制建议数量,例如仅显示10个热门建议,而不是加载整个列表。

2
在不使用外部命令的情况下浏览代码项目
我试图在命令或搜索模式下收集Vim命令/查询工具箱,以在不使用Ctags或其他外部工具的情况下导航代码库。Ctags很棒,但是支持会因您所坚持的开发环境而异。我只想依靠Vim的知识。
9 search  ide 

4
如何向后删除内容直到上一行的“ =”?
我使用一个JavaScript代码示例: 1 var a = 1; 2 var b = |{}; 光标位于|(当光标形状为块时,在字符“ {”上的位置)上,我发现我a应该被分配一个对象,因此我想如下进行修改: 1 var a = {}; 所以我想知道当光标在“ {”上时,如何快速删除“ {”之前的所有内容,直到第1行中“ =“”之后的空白? 在其他普通编辑器中,我将按Backspace键删除代码。但是我不怎么在vim中实现这一目标。

2
如何使用其他按键图创建伪插入模式?
我处于定期使用两种不同的键盘布局(Programmers-Dvorak和Turkish-F)的情况中,与众不同。这些布局彼此之间有很大的不同,我只能精通一组肌肉记忆的vim。我非常精通Dvorak布局中的vim命令,但是如果我的键盘是Turkish-F布局,则几乎无法使用。不幸的是,我经常用英语和土耳其语甚至混合语言来编辑文件。我的熟练程度是,我可以在各自的键盘布局中很好地键入任何一种语言,但是我的大脑拒绝交叉连接它们,甚至从Dvorak布局中用土耳其语键入几个单词,反之亦然。 我有两个按键致敬的绑定来更改Xorg中的布局,但是即使这样,在编辑混合语言文件时,vim中的工作流程也很笨拙: <vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…> 我希望能够将其简化为: <vim commands…><leader>i…content…<escape><vim commands…> ...这样就可以使用<leader>i一组:imap值来模拟土耳其语布局,而无需更改系统键盘布局。同时,i将切换到插入模式,但没有多余的:imap值。值本身很容易,我只需要像这样的字母映射即可: :imap a u :imap A U :imap o i :imap O İ "etc. 问题是,如何设置两个插入模式,一种正常插入模式和一个伪插入模式是除了一堆映射的相同的,以及如何可以触发这些模式与<leader>i,<leader>a等?


3
自动关闭最旧的缓冲区?
最近,我需要编辑大量文件,以使每个文件有一个小的更改。为了获得每个文件,我浏览了NERDtree并打开了一个文件。随着我打开越来越多的文件,我注意到我的内存使用量增长了很多。关闭vim给了我很多记忆。 我已经安装了许多插件,但是我认为我的内存使用量之所以急剧增长的原因是经过几次编辑后打开的缓冲区数量。 有没有办法限制vim允许一次打开的缓冲区数量,并根据编辑时间自动关闭旧缓冲区?
9 buffers 

1
使用带有死键的标记
我使用的键盘布局中,反引号(`)是一个死键。 这意味着当我键入反引号后跟元音(例如`a)时,Vim看到的是带重音符号(à)。因此,如果用设置标记,则ma可以使用跳到标记的行'a。但是跳转到标记的特定位置`a将不起作用。 我找到了一种解决方法:输入死键时,我可以先敲击反引号,再按空格键,使Vim收到反引号。因此,如果要标记,请a输入`␣a。 有没有办法在不占用额外空间的情况下跳到最高分?没有副作用吗?


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.