小编Rem*_*man的帖子

VIM:可用的快捷方式?

我在vim中使用了很多快捷方式.插件采用其他快捷方式.

有时我想为新命令添加一个快捷方式,但后来注意已经采用了快捷方式.

有没有办法查看VIM中所有可用快捷方式的列表?(所有ctrl-shift-alt快捷键)

vim shortcuts keyboard-shortcuts

30
推荐指数
3
解决办法
1万
查看次数

如何在vim中混洗列表?

在Vim中刷新列表的最佳方法是什么?

我试图在vim中随机排序(使用vimscript).我为此创建了一个包含所有行号的列表(在我的选择中).

如果我从第10行到第20行选择,我的列表将是:

mylist = ['10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
Run Code Online (Sandbox Code Playgroud)

我想随机对行进行排序,并使用for循环将它们放回新序列中的相同选择中.为了实现这一点,我想多次洗牌,但不知道如何洗牌.

另一个解决方案是从我的上一个随机选择一个索引.

无法找出最好的方法.

我知道我可以使用python,ruby或其他语言对行进行排序,但我不想安装它们.我想在上面使用vimscript实现.

sorting random vim list

23
推荐指数
2
解决办法
8616
查看次数

在vimscript中使用Python:如何将值从python脚本导出回vim?

我在vim中挣扎着Python.
我还没有发现如何将python脚本(在vim函数中)中的值导回到vim pe

function! myvimscript()

  python << endpython
    import vim, random, sys
    s = vim.eval("mylist")
    # do operation with variable "s" in python
  endpython

  " import variable "s" from above 
  " do operation with "s" in vimscript
endfunction
Run Code Online (Sandbox Code Playgroud)

1)如何"s"在vim中再次使用(如何"s"从python代码导入vim)?

我无法找到如何使用vim.current.buffer选择.

function! myvimscript()
  let startline = line("'<")
  let endline = line("'>")

  python << endpython
    start = vim.eval("startline")
    end = vim.eval("endline")
    cb = vim.current.buffer 
    l = cb[start:end]
  endpython
endfunction
Run Code Online (Sandbox Code Playgroud)

2)我如何分配动态值"start",并"end""l"

python variables vim

18
推荐指数
2
解决办法
5090
查看次数

如何在一行上找到第三次出现的模式

今天,我不得不在一条线上的第一个多个空格处对齐一张桌子.

PE

<ScrollWheelDown>    move window     three lines     down  
<S-ScrollWheelDown>     move window    one page   down
<ScrollWheelUp>        move window      three lines up
<S-ScrollWheelUp>    move window   one page      up
Run Code Online (Sandbox Code Playgroud)

我使用Tabular插件来对齐表格,但我找不到如何只查找多个空格的第一个出现并且仅在那里进行对齐的方法.

我在VIM中也不知道:如果我只想在一条线上找到第三次出现的模式,那将是什么样的正则表达式?正则表达式与使用Tabular相同吗?

regex vim alignment tabular

17
推荐指数
2
解决办法
5万
查看次数

确认删除行

我创建了一个函数来搜索文件中的所有双行.

我使用"行号"g /.*/ d删除该行.

但是,我想确认是否必须删除一行,如s /..// gc命令

是否可以使用global或substitute
命令删除某一行并确认每个操作?

vim confirm line

17
推荐指数
2
解决办法
3409
查看次数

Vim和正则表达式:Vim使用什么样的正则表达式?

从6个月开始,我就使用了优秀的Vim文本编辑器.最有趣的是Vim优秀的正则表达式支持内置.

我想更好地了解正则表达式,以便在这里提出更少的问题:)

我尝试了Regex coach,Espresso和其他正则表达式帮助应用程序,但我发现即使他们在这些应用程序中工作,它通常也不适用于VIM.Vim使用什么样的正则表达式?是否有任何帮助应用程序可以为Vim构建正则表达式命令?

regex testing vim

15
推荐指数
2
解决办法
4521
查看次数

vim:加入段落中的所有行

我正在尝试使用vimscript加入段落(文本块)中的所有行,但没有成功.
我想为每个段落(文本块)执行此操作,并希望在它们之间保留空行.
(我不想使用宏)

当我使用}w命令转到下一段中的第一个单词时,我注意到它不能识别空格中的空行或者在段落之间有多个空行.那不是我想要的.

所以我试过这个:
做一个搜索:
\(^.*\S\+.*\n\)\{2,}
做:
normal vipgJ
再做上面的搜索等.

我手动操作时工作正常,但我不能把它放在脚本中.

我试过这个脚本:

function! <SID>JoinParagraphs()
let i = 1
normal gg
while i <= 200
call search("\\(^.*\\S\\+.*\\n\\)\\{2,})", "")
normal vipgJ
let i=i+1
endwhile
endfunction

不起作用......
我也尝试改变"呼叫搜索..."这一行,
let @/ = "\\(^.*\\S\\+.*\\n\\)\\{2,})"
但这样可以将所有行连接在一起(不保留空行).

我错了什么?

vim join lines

14
推荐指数
5
解决办法
5515
查看次数

删除突出显示的搜索模式之前/之后的所有文本

我知道在VIM中如何搜索字符串并删除文本直到行的开头/结尾但我想知道是否也可以在突出显示的搜索模式之前或之后删除所有文本.

vim search

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

删除除模式以外的任何内容

让我们说这是我的文字:

这是我的文字这
是我的文字这是我的文字
我的文字就是这个

我想突出显示除模式之外的所有文本并删除突出显示的文本.
pe text:这一定是结果.

文字
texttext
文本

我发现代码如何选择除pattern之外的所有文本:
\%(\%(.{-}\)\@!text\zs\)*

但我不知道如何删除所有突出显示的文本.
这不起作用:
:%s/\%(\%(.{-}\)\@!bell\zs\)*//

谁能帮我?

vim search

12
推荐指数
3
解决办法
7243
查看次数

双引号用单引号,反之亦然

我经常发现自己反转引号:
从双引号""到单引号'',
从单引号''到双引号"".

我知道有一种方法可以将单引号切换为双引号:
:%s/'\(\([^']*\)\)'/"\1"/g

以及将双引号切换为单引号的方法:
:%s/"\(\([^"]*\)\)"/'\1'/g

但我怎么做这两个操作起来不包括在第二交换第一互换报价?

regex vim quotes

11
推荐指数
2
解决办法
2799
查看次数