标签: vim

如何在Vim中增加垂直分割窗口大小

:vsplit(缩写形式:vs:)将垂直分割Vim视口.:30vs拆分视口,使新窗口宽30个字符.创建这个30个字符窗口后,如何将其大小更改为31或29?

使用水平窗口Ctrl- W +将行数增加一.将列增加一个的等效命令是什么?

vim window viewport

310
推荐指数
9
解决办法
10万
查看次数

如何在vim中交换两个打开文件(在拆分中)的位置?

假设我在vim中有一些任意分割布局.

____________________
| one       | two  |
|           |      |
|           |______|
|           | three|
|           |      |
|___________|______|
Run Code Online (Sandbox Code Playgroud)

有没有一种方法来交换onetwo维护相同的布局?在这个例子中它很简单,但我正在寻找一种有助于更复杂布局的解决方案.

更新:

我想我应该更清楚.我之前的例子是对实际用例的简化.使用实际的实例: 替代文字

我怎么能交换任何两个分裂,保持相同的布局?

更新!3年多以后......

我把sgriffin的解决方案放在你可以轻松安装的Vim插件中!使用您喜欢的插件管理器安装它并尝试一下:WindowSwap.vim

一个小小的演示

vim layout split editor

304
推荐指数
5
解决办法
7万
查看次数

在Vim中上下移动整条线

在Notepad ++中,我可以使用Ctrl+ Shift+ Up/ Down来上下移动当前行.在Vim中有类似的命令吗?我看过无尽的向导,却一无所获.

如果没有,我怎么能将动作绑定到该组合键?

编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾处.向上移动第一行或向下移动底线会删除该行,当向下移动底线时,它最初会跳转两个空格,就像一个棋子!任何人都可以提供任何改进吗?

vi vim

301
推荐指数
13
解决办法
13万
查看次数

在多行上查找和替换vim中的字符串

我可以:%s/<search_string>/<replace_string>/g用来替换文件中的字符串,或者:s/<search_string>/<replace_string>/替换当前行.

如何在vim中选择和替换选择行中的单词?

示例:从行替换文本6-10,14-18但不从中替换11-13.

vi vim

300
推荐指数
9
解决办法
30万
查看次数

如何查看哪些插件使Vim变慢?

有没有办法分析Vim插件?

当我打开一个大的时候,我的MacVim变得越来越慢.py.我知道我可以取消选择所有插件并逐个重新选择以检查哪个插件是罪魁祸首,但有更快的方法吗?

我的dotvim在这里:https://github.com/charlax/dotvim

debugging vim optimization macvim

295
推荐指数
5
解决办法
6万
查看次数

如何暂时退出vim并返回

我怎么能退出Vim,而不是:q,然后回去继续编辑?

vim

293
推荐指数
9
解决办法
13万
查看次数

vim行号 - 默认情况下如何启用它们?

我可以:set number在我正在编辑的文件中但是如何让它们始终默认打开?

vi vim editing line-numbers

293
推荐指数
6
解决办法
15万
查看次数

在Vim改变案例

Vim中是否有一个命令可以更改所选文本的大小写?

vim

292
推荐指数
3
解决办法
9万
查看次数

如何在Vimdiff中展开/折叠差异部分?

我今天开始使用vimdiff了,并希望在基于Windows的差异编辑器上做一些我认为理所当然的事情(比如扩展/折叠差异部分,有完整的文件扩展/只有差异,上面有3个上下文行或者以下等).我目前只知道以下命令:

键盘快捷键:

  • do - 从其他窗口更改到当前窗口.

  • dp - 将当前窗口中的更改放入另一个窗口.

  • ]c - 跳转到下一个更改.

  • [c - 跳转到上一个更改.

  • CTRL+ W,w- 切换到另一个分割窗口(CTRL+ W,CTRL+ W做同样的事情,以防CTRL稍后放开密钥)

有人能指出我正确的方向,所以我可以复制类似的功能吗?

例如,如果我可以扩展/折叠差异周围的线条会很好.

linux vim diff vimdiff command-line-interface

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

Vim:在多行中插入相同的字符

有时我想跨多行编辑某个可视文本块.

例如,我会采用如下所示的文本:

name
comment
phone
email
Run Code Online (Sandbox Code Playgroud)

让它像这样扯掉

vendor_name
vendor_comment
vendor_phone
vendor_email
Run Code Online (Sandbox Code Playgroud)

目前,我现在的方式是......

  1. 按下V然后按j4次选择所有4行块.
  2. 缩进>.
  3. 回去一封信h.
  4. 转到阻止视觉模式ctrlv.
  5. j4次选择向下4行.此时,您已选择了一个4x1的空白视觉块(4行,1列).
  6. c.请注意,这一列几乎向左缩进了一列.
  7. 输入" vendor_"没有引用的a.注意我们不得不放回的额外空间.
  8. esc.这是我用于esc退出插入模式的极少数时间之一.ctrlc只会编辑第一行.
  9. 重复步骤1.
  10. 用另一种方式缩进<.

如果在单词之前至少有一列空格,我不需要缩进.如果我不必清除视觉块,我就不需要空格c.

但是如果我必须清除,那么有没有办法在不创建所需的缩进空格的情况下执行上面执行的操作?

此外为什么用退出了插入模式编辑一次只能工作多行escctrlc

编辑:

这是一个更复杂的例子

name    = models.CharField( max_length = 135 )
comment = models.TextField( blank = True )
phone   = models.CharField( max_length = …
Run Code Online (Sandbox Code Playgroud)

vim

283
推荐指数
11
解决办法
13万
查看次数