在Vim中,可以将语法高亮显示附加到文件扩展名.
键盘快捷键是否可以这样做?
即,只有在编辑具有特定扩展名的文件时,快捷方式才会打开.
我遇到过一种情况,我正在读取一些日志文件,然后通过以下代码片段计算我遇到的行数.
byte[] c = new byte[1024];
long count = 0;
int readChars = 0;
while ((readChars = is.read(c)) != -1) {
for (int i = 0; i < readChars; ++i) {
if (c[i] == '\n') {
++count;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试读取文件(CSV,Syslog或任何其他野生格式)时,它运行得很好,并给我正确的结果.但是当我尝试运行一个通过mac生成的文件时,它会变成干线,只是报告回读了一行.
现在我的日志文件很大,我知道它有几千行日志,但它只读了一行.我在Sublime中打开了这个文件,我可以看到所有单独的行,但是当我通过VIM查看这个文件时,它只显示了一个文件,每行末尾有一个字符'^ M'(我猜它是正在使用它作为行终止符).
两行的样本如下.你可以看到vim正在显示它应该是新行的^ M字符
15122,25Dec2013,19:42:25,192.168.5.1,log,allow ,, eth0,outbound,Application Control ,, Network,Bob(+),Bob(+),,,, 59857d77 ,,,,,,,, 570033 ,,,,,,,,,,,,, 192.168.5.7,176.32.96.190,tcp,80,56305,15606,554427,60461741,** ,,,,,,,, 1,**,**,**,**,**,**,**,**,**,其他:Wget/1.13.4(linux-gnu),其他:服务器,192.168.5.7,60461741:1 ,,,,, ,** …
我在寻求仅在偶数行上执行替换时发现了以下内容:
:g/^/if !(line('.')%2)|s/foo/bar/g|endif
Run Code Online (Sandbox Code Playgroud)
效果很好.但有人可以解释一下|的必要性 :g调用的命令部分中的字符?
鉴于Vim中的以下文本:
ab
cde
Run Code Online (Sandbox Code Playgroud)
从(第1行,第3列)到(第2行,第4列)这两个位置,如何在Vimscript中进行视觉选择,包括两端?
注意(第1行,第3栏)是指后面 的位置b,通常在正常模式下无法选择.
编辑:我总共犯了4个错误.
在第5行,我有"''",这没有任何意义.
在第9行,我有"map(asciiRotC)".这应该是"map(asciiRotC n)"
在第13行,我有"x:xs.这应该是"(x:xs)".
在最后一行我有"asciiRotWith 0(+1)".这应该是"......(+ 1)0"
这是我的完整代码(该文件名为asciiRot.hs):
import System.Environment
import System.IO
asciiRotC :: Int -> Char -> Char
asciiRotC _ '' = ''
asciiRotC 0 msg = msg
asciiRotC n msg = toEnum (33 + (n + (fromEnum msg) - 33) `mod` 93) :: Char
asciiRot :: Int -> String -> String
asciiRot n msg = map (asciiRotC) msg
asciiRotWith :: (Int->Int) -> Int -> String -> String
asciiRotWith _ _ "" = ""
asciiRotWith f acc x:xs …Run Code Online (Sandbox Code Playgroud) 我有下一个代码:
command[check_ping]=/usr/lib64/nagios/plugins/check_ping -w $ARG1$ -c $ARG2$
command[check_filemtime]=/usr/lib64/nagios/plugins/check_filemtime $ARG1$
command[check_iostat]=/usr/lib64/nagios/plugins/check_iostat $ARG1$ $ARG2$
command[check_open_files]=perl /usr/lib64/nagios/plugins/check_open_files.pl -w $ARG1$ -c $ARG2$
command[check_itai]=/usr/lib64/nagios/plugins/itai
command[check_mem]=perl /usr/lib64/nagios/plugins/check_mem.pl -w $ARG1$ -c $ARG2$_
command[check_uptime]=/usr/lib64/nagios/plugins/check_uptime
command[check_ifstatus]=/usr/lib64/nagios/plugins/check_ifstatus -w $ARG1$ -c $ARG2$
command[check_local_load]=/usr/lib64/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
command[check_local_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
Run Code Online (Sandbox Code Playgroud)
从vim编辑器中,我想"\"在每个$ARG参数之前添加一个转义字符,所以我尝试了这个命令:
:81,129!sed -e "/\<\$A/\<\\$A",但是会发生的是这些行(81-129)消失,sed命令中的错误写在第81行,我究竟做错了什么?81-129是文件中的相关行号
也许有人知道如何能够在更改git文件后在VIM中编辑时刷新git diff消息.
做:e没有多大帮助.
谢谢,伊万.
介绍
在Windows下的gVim中,我必须在每个文件串中替换insert和mod某些特定位置的字符.
例
QWAER;PA 0X000055;123WAAAA
TYUIO;PA 0Y000056;123VAAAA
Run Code Online (Sandbox Code Playgroud)
需要成为
QWAE@;PAX000055;123;WAAAA
TYUI@;PAY000056;123;VAAAA
Run Code Online (Sandbox Code Playgroud)
在@ delete char 9,10 insert中修改char 5; 在原始的pos 22或删除在pos 20之后
更多信息
通常我这样做
放置光标和文本的开头选择按CTRL-V(在gVim中按CTRL-Q)开始选择列保持按SHIFT并选择感兴趣的区域在文件的末尾,然后执行替换插入或修改.(这是我在GVim Win32中了解仅限键盘列块选择的地方,或者为什么在包含mswin.vim时Ctrl-Q不能模拟Ctrl-V? 在这里我学习如何进行插入(http:// pivotallabs .com/column-edit-mode-in-vi /)
这不是一个正确的做事方式.
在vim中,我可以使用命令替换扇形行等.
我认为应该可以使用命令来替换每个字符串的一部分,但我没有关于这些命令的Knoledge.
这是主要的想法
题
有没有办法使用具有绝对位置而不是选择的命令来执行操作.
谢谢
我想以下面的方式替换一个函数.
Old function :
old_func(a,b,c)
New function :
new_func(b,a,c)
Run Code Online (Sandbox Code Playgroud)
如何用new_func替换old_func并处理参数(在vim中)?
我喜欢/patternvim中的增量搜索(),它在我输入时匹配模式.但它在文件范围内.是否可以限制它以便在当前行中搜索并在到达行结束时回绕?这将有助于加速一行中的导航,因此如果没有引入额外的(更多)击键,那将是很好的.