我在vim中使用了很多快捷方式.插件采用其他快捷方式.
有时我想为新命令添加一个快捷方式,但后来注意已经采用了快捷方式.
有没有办法查看VIM中所有可用快捷方式的列表?(所有ctrl-shift-alt快捷键)
在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实现.
我在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"
今天,我不得不在一条线上的第一个多个空格处对齐一张桌子.
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相同吗?
我创建了一个函数来搜索文件中的所有双行.
我使用"行号"g /.*/ d删除该行.
但是,我想确认是否必须删除一行,如s /..// gc命令
是否可以使用global或substitute
命令删除某一行并确认每个操作?
从6个月开始,我就使用了优秀的Vim文本编辑器.最有趣的是Vim优秀的正则表达式支持内置.
我想更好地了解正则表达式,以便在这里提出更少的问题:)
我尝试了Regex coach,Espresso和其他正则表达式帮助应用程序,但我发现即使他们在这些应用程序中工作,它通常也不适用于VIM.Vim使用什么样的正则表达式?是否有任何帮助应用程序可以为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中如何搜索字符串并删除文本直到行的开头/结尾但我想知道是否也可以在突出显示的搜索模式之前或之后删除所有文本.
让我们说这是我的文字:
这是我的文字这
是我的文字这是我的文字
我的文字就是这个
我想突出显示除模式之外的所有文本并删除突出显示的文本.
pe text
:这一定是结果.
文字
texttext
文本
我发现代码如何选择除pattern之外的所有文本:
\%(\%(.{-}\)\@!text\zs\)*
但我不知道如何删除所有突出显示的文本.
这不起作用:
:%s/\%(\%(.{-}\)\@!bell\zs\)*//
谁能帮我?
我经常发现自己反转引号:
从双引号""
到单引号''
,
从单引号''
到双引号""
.
我知道有一种方法可以将单引号切换为双引号:
:%s/'\(\([^']*\)\)'/"\1"/g
以及将双引号切换为单引号的方法:
:%s/"\(\([^"]*\)\)"/'\1'/g
但我怎么做这两个操作起来不包括在第二交换第一互换报价?