For the life of me, I cannot figure out the cause of this: when writing in LaTeX documents, I like to keep my line width to maximum of 80 characters. As such, I will execute the vim command gqap and vim will automatically re-wordwrap the paragraph I am writing.
For example, it will cause a long line to become many shorter ones:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pharetra nunc eget arcu dapibus pretium. Nulla vel risus quam, ut sollicitudin sem. Vivamus vitae diam in risus pharetra gravida. Donec rutrum mattis nulla, in consectetur lorem luctus varius. Donec augue purus, iaculis eget fringilla nec, vehicula ut sapien. Quisque sit amet dolor mauris. Sed ac est eu ligula aliquam tincidunt. Proin condimentum rutrum lacinia.
becomes:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pharetra
nunc eget arcu dapibus pretium. Nulla vel risus quam, ut sollicitudin sem.
Vivamus vitae diam in risus pharetra gravida. Donec rutrum mattis nulla, in
consectetur lorem luctus varius. Donec augue purus, iaculis eget fringilla nec,
vehicula ut sapien. Quisque sit amet dolor mauris. Sed ac est eu ligula aliquam
tincidunt. Proin condimentum rutrum lacini
But, for some paragraphs, it will start adding unusual indentions towards the end of the paragraph:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pharetra
nunc eget arcu dapibus pretium. Nulla vel risus quam, ut sollicitudin sem.
Vivamus vitae diam in risus pharetra gravida. Donec rutrum mattis nulla, in
consectetur lorem luctus varius. Donec augue purus, iaculis eget fringilla,
vehicula ut sapien. Quisque sit amet dolor mauris. Sed ac est eu ligula
tincidunt. Proin condimentum rutrum lacini
Why does vim do this? I have yet to figure out the pattern. How can I make it format paragraphs "the correct way"?
Yes, vim's 'smartindent' is not well named. I had trouble with this for a while before I figured out what was wrong. For others, if you notice strange indenting behavior after lines starting with "if" or "for", unset smartindent. You will come across this a lot if you start using vim as a word processor.
From the vim help file, 'smartindent' will indent after a line starting with a keyword from 'cinwords', which is "if,else,while,do,for,switch", by default.
The problem was that I had "smartindent" enabled. Disabling this for LaTeX documents solved it:
au BufEnter *.tex set nosmartindent
Related
I am using ttk widgets for tkinter GUI.
I wonder how to construct a TextBox using a TTK widgets.
I can't find the equivalent TextBox widget as TTK
The Text widget is not available in ttk. Python - Text widget from tkinter in tkk
You can use Text. Here is an example:
from tkinter import *
r = Tk()
text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non ornare leo, nec pulvinar augue. Nam imperdiet sem eu quam placerat, placerat fermentum leo ornare. Sed malesuada non urna vel finibus. Vestibulum condimentum gravida nunc, faucibus malesuada augue laoreet sed. Pellentesque consectetur orci in felis lacinia finibus. Vestibulum luctus est quis velit hendrerit, et mattis neque pretium. Duis eget urna tristique, viverra ligula id, lacinia felis. Suspendisse potenti. Etiam nisi quam, tincidunt non risus a, rhoncus vulputate augue. Morbi molestie sagittis lectus, non lacinia eros pellentesque in.
Integer aliquet finibus sapien at feugiat. Fusce lobortis vulputate ex, vitae faucibus nunc eleifend eu. Pellentesque hendrerit tortor a est vulputate, vel porttitor eros pretium. Pellentesque rhoncus felis imperdiet, lacinia dolor sed, tempus eros. Duis placerat fringilla pulvinar. Maecenas erat nisl, consectetur ac ipsum sed, hendrerit fermentum leo. Suspendisse sed tortor ultricies lacus porttitor viverra. Aenean quis imperdiet nulla. Vivamus a sem tellus. Ut vitae neque a enim bibendum euismod."""
t = Text(r)
t.pack(fill=BOTH, expand=1)
t.insert("end", text)
r.mainloop()
I am trying to find a way to search from a string within a text to another string.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus massa nulla, lobortis sit amet placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.
Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim tellus, vel dictum nisi. Etiam sit amet libero vulputate, eleifend libero nec, semper ex. Cras eu magna fringilla, iaculis sapien id, feugiat lorem. Ut id velit mauris.
I'd like to know if there is a way, in the command line, to come up with what's in between the bolded words in the paragraph above.
I've tried different variations of grep without any success.
You can use parameter substitution:
#!/bin/bash
string=$( <dat/lorem.txt )
tmp=${string#*amet}
tmp=${tmp%tellus*}
echo $tmp
output:
$ string=$( <dat/lorem.txt ); tmp=${string#*amet}; tmp=${tmp%tellus*}; echo $tmp
, consectetur adipiscing elit. Phasellus massa nulla, lobortis sit amet placerat hendrerit,
mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante,
vitae molestie ante nulla non est. Vivamus eget fermentum lorem, sed suscipit nulla.
Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et
netus et malesuada fames ac turpis egestas. Etiam vitae tortor quis lectus convallis
ullamcorper. Nullam nec dignissim
by one sed command
sed -n ':a;$!{N;ba};s/.*\(amet.*tellus\).*/\1/p' infile
amet placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.
Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim tellus
If you needn't the keywords in output:
sed -n ':a;$!{N;ba};s/.*amet\(.*\)tellus.*/\1/p' infile
placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.
Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim
Use sed for this one :
sed -n '/amet/,/tellus/p' atext.txt | sed 's/.*amet/amet/;s/tellus.*/tellus/'
Output should look like:
amet ...(everything in between)...tellus
The first sed deletes all lines except the ones that include the words amet and tellus, and everything in between.
The second sed deletes all words before amet, and all words after tellus
You can use a regular expression
grep -e 'amet .* tellus' yourfile
Where . matches any character except line breaks, and * means 0 or more times.
All,
I was wondering if anyone out there was a par guru. I'm mainly wondering if there is a way to get par to see a Fortran comment style that is used in many programs I work with.
For example, if I have:
! 2001Jan01 Jimson Lorem ipsum dolor sit amet, consectetuer adipiscing
! elit. Aenean commodo ligula eget dolor.
! 2002Jan01 Johnny Aenean massa. Cum sociis natoque penatibus et magnis dis parturient
! montes, nascetur ridiculus mus. Donec quam felis, ultricies nec,
! pellentesque eu, pretium quis, sem.
! 2004Feb01 Thompson Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
! aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
! Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus.
It would be nice to run par in vim (with :set formatprg=par) and get something like:
! 2001Jan01 Jimson Lorem ipsum dolor sit amet, consectetuer adipiscing
! elit. Aenean commodo ligula eget dolor.
! 2002Jan01 Johnny Aenean massa. Cum sociis natoque penatibus et magnis
! dis parturient montes, nascetur ridiculus mus. Donec
! quam felis, ultricies nec, pellentesque eu, pretium
! quis, sem.
! 2004Feb01 Thompson Nulla consequat massa quis enim. Donec pede justo,
! fringilla vel, aliquet nec, vulputate eget, arcu. In
! enim justo, rhoncus ut, imperdiet a, venenatis vitae,
! justo. Nullam dictum felis eu pede mollis pretium.
! Integer tincidunt. Cras dapibus.
where it sees the hanging spaces, etc. Instead par does:
(524) $ par -w80 < text_for_par
! 2001Jan01 Jimson Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
! Aenean commodo ligula eget dolor. 2002Jan01 Johnny Aenean massa. Cum sociis
! natoque penatibus et magnis dis parturient montes, nascetur ridiculus
! mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
! 2004Feb01 Thompson Nulla consequat massa quis enim. Donec pede justo,
! fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus
! ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis
! pretium. Integer tincidunt. Cras dapibus.
which, I do admit, is quite well formatted at 80 characters and keeps the "!<space><space>" at the front.
Unfortunately, par's PARINIT syntax is a bit...mysterious to me. It is entirely possible this is not possible and, if so, okay. But par seems to be powerful in a way like vim is. As long as you know the right confusing character string, it'll do what you want.
I'm not a par expert but if you try something like
cat text_for_par | par 80 -p24 -d1
it should give you what you're looking for. Just look at the man page on par - it tells you how to achieve most things.
I use vim to write a lot of text (mostly for research papers), and I recently start to format paragraphs and sentences like this:
Lorem ipsum dolor sit amet, consectetur adipiscing
elit sed diam et arcu scelerisque rutrum eget
vitae sed diam et arcu scelerisque rutrum eget
vitae sed diam et arcu scelerisque rutrum eget
vitae.
Aenean euismod tristique sollicitudin.
Vestibulum sed diam et arcu scelerisque rutrum eget
vitae sapien.
Quisque dui ligula, semper eget iaculis at, eleifend
at ligula.
Sed vestibulum tellus ac libero iaculis sit amet commodo
sapien pellentesque.
Cras quis dignissim neque.
Donec neque mauris, dictum tempus tincidunt in,
pellentesque sit amet dui.
I hope you can guess the pattern.
Now I do this mostly manual what is some kind of akward, especially if you add text in the middle of the sentence. My question would be, how can i do this automagically?
I know that I can use "gq100" to force a linebreak on the next 100 lines, but this does not do exactly what I want. It would be great if this is not really a hard linebreak but only a virtual one, which means when I put the cursor in the line starting with "Lorem ipsum" I can copy and past the whole sentence with y and p as if there wouldn't be any linebreak at all.
Does someone have an idea on this one?
Cheers,
T
Do you mean: If a line starts with 3 spaces, it belong to previous sentence?
You can do this:
:set textwidth=0
:set wrap
:set showbreak=\ \ \
Note: there's a space after every \.
Try to type a very lone line. It'll auto wrap. And the next line starts with 3 spaces.
I guess this is what you are looking for, the breakindent patch for vim:
http://sqizit.bartletts.id.au/2011/01/31/vim-and-breakindent/
I was wondering if it would be possible to run the vim spell checker while coding with PHP.
I can run it if I disable syntax highlighting, and it highlights almost all methods/function names because they are not English words.
So, my question is this, can I run the spell check on just the strings within PHP files?
For example, just within the ' quotes (and " quotes), ignoring everything else:
$paragraph = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In est libero, dictum ut suscipit eget, lacinia in justo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent sit amet sem libero, in pretium enim. Pellentesque tortor ante, imperdiet quis mattis in, tincidunt et ligula. Cras porta velit a ligula venenatis placerat.';
$paragraph2 = "Vestibulum quis eleifend lectus. Vestibulum odio odio, mollis at eleifend a, adipiscing sed quam. Nam quis nisi quis mauris faucibus hendrerit eu a leo. Sed feugiat purus sit amet purus congue quis semper diam malesuada. Vivamus et enim non arcu pretium sollicitudin. Nullam blandit, lorem eu aliquet tincidunt, enim mauris placerat lectus, id faucibus nulla lectus non elit. Sed eget fermentum lacus. Ut tempus pulvinar neque, vel pellentesque purus aliquet quis. Vivamus molestie pretium quam at imperdiet. Maecenas diam turpis, malesuada ut sollicitudin ac, congue eleifend urna. Quisque id ipsum eget ipsum tempus blandit at vel magna. Fusce eu felis metus.";
see the vim help: :help spell-syntax
You can define particular syntax groups as having spell checking.
There's probably a better way to do it (using a ~/.vim/after/syntax/php.vim file?), but a simple hack is to make a personal version of the php syntax file in ~/.vim/syntax (you can do this by doing :e $VIMRUNTIME/syntax/php.vim and the :saveas ~/.vim/syntax/php.vim), and change all instances of the text contains=#phpAddStrings to contains=#Spell,#phpAddStrings. Next time you open a php file, turn on spell checking as normal with :set spell.